[mpich-devel] Sessions Considering Changing MPI_COMM_WORLD
Kenneth Raffenetti
raffenet at mcs.anl.gov
Mon Oct 30 20:29:12 CDT 2017
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
>
More information about the devel
mailing list