[mpich-devel] Sessions Considering Changing MPI_COMM_WORLD

Jed Brown jed at jedbrown.org
Mon Oct 30 23:00:12 CDT 2017


Note that MPI_COMM_WORLD isn't required to be a compile-time constant in
the current standard and Open MPI doesn't treat it as one.  (It is a
link-time constant.)  So regardless of potential performance impact,
standard-compliant user code cannot treat it as a compile-time constant
(e.g., by using it in a case statement).

I'm also skeptical about ability to measure an impact on user code and
thought your SC paper was about compile-time specialization in the MPI
implementation.


As one data point, PETSc does not reference MPI_COMM_WORLD except for
some optional diagnostics and it would be pretty easy to remove.

Kenneth Raffenetti <raffenet at mcs.anl.gov> writes:

> Strictly speaking, compile-time objects like MPI_COMM_WORLD impose less 
> overhead than dynamically created ones. See our SC paper for more 
> details :).
>
> Ken
>
> On 10/30/2017 05:51 PM, Jeff Hammond wrote:
>> This is going to cause horrible problems. I hate to say it, but the time 
>> for MPI to have avoided hidden state was in the 1990s.
>> 
>> Lots of MPI libraries create their own communicator from the 
>> compile-time constant rather than a communicator argument. Breaking even 
>> a few of these will ruin MPI’s exhalted reputation in the HPC world.
>> 
>> The better option is to provide new headers and libraries for sessions 
>> that break backwards compatibility. Or just have users opt-in to 
>> sessions by not using MPI_COMM_WORLD at all. That way you’re only 
>> breaking code that wants this feature rather than many that don’t.
>> 
>> What’s your Fortran story? If you don’t have a trivial solution for 
>> users of mpif.h, you’ve lost approximately half if MPI’s users.
>> 
>> Jeff
>> 
>> On Mon, Oct 30, 2017 at 11:33 AM Bland, Wesley <wesley.bland at intel.com 
>> <mailto:wesley.bland at intel.com>> wrote:
>> 
>>     The sessions working group is working on a proposal that, among
>>     other things, would change the way MPI_COMM_WORLD works. As much as
>>     I don't want to take things out of context for those who aren't
>>     familiar with the proposal, I'm not going to summarize the whole
>>     thing here. If you need that, look here:
>>     https://github.com/mpiwg-sessions/sessions-issues/wiki/sessions_cheat_sheet
>> 
>> 
>>     On today's call, we were trying to decide the result of a backward
>>     compatibility break for the MPI_COMM_WORLD symbol. We want to keep
>>     the MPI_COMM_WORLD symbol to allow legacy codes to work, but we
>>     don't want to make it a compiler symbol anymore. It would only exist
>>     if you call MPI_INIT. To that end, MPI_INIT would look something
>>     like this:
>> 
>>     MPI_Init(...) {
>>     MPI_Comm *comm;
>>     MPI_Session *session;
>> 
>>     MPI_Session_init(..., session);
>>     MPI_Group_create_from_session_name(&session, "mpi://WOLRD", comm);
>>     MPI_COMM_WORLD = *comm;
>>     }
>> 
>>     The problem here is that MPI_COMM_WORLD is no longer the
>>     compile-time constant that it was before. For example, if you're
>>     using MPI_COMM_WORLD in a library, this would cause problems.
>> 
>>     The working group is trying to figure out the results of this to
>>     decide whether this would cause horrible problems. It seems that as
>>     long as applications are reasonably well behaved and check if the
>>     library is initialized first, they should work correctly.
>> 
>>     What is this community's opinion of this?
>> 
>>     Thanks,
>>     Wesley
>>     _______________________________________________
>>     To manage subscription options or unsubscribe:
>>     https://lists.mpich.org/mailman/listinfo/devel
>> 
>> -- 
>> Jeff Hammond
>> jeff.science at gmail.com <mailto:jeff.science at gmail.com>
>> http://jeffhammond.github.io/
>> 
>> 
>> _______________________________________________
>> To manage subscription options or unsubscribe:
>> https://lists.mpich.org/mailman/listinfo/devel
>> 
> _______________________________________________
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/devel


More information about the devel mailing list