[Mpi-forum] Question about the semantics of MPI_Comm_disconnect

Nathan Hjelm hjelmn at lanl.gov
Tue Nov 12 13:02:22 CST 2013

I am trying to understand the semantics of MPI_Comm_disconnect but there is a contradiction in
the standard. On page 400, lines 29-31 the standard states:

MPI_COMM_DISCONNECT may be called only if all communication is complete and
matched, so that buffered data can be delivered to its destination. This requirement is the
same as for MPI_FINALIZE.

Which suggests that all communication MUST be complete before MPI_Comm_disconnect is called. But
if I look at lines 41-43 I see this:

Rationale. It would be nice to be able to use MPI_COMM_FREE instead, but that
function explicitly does not wait for pending communication to complete. (End of

Which suggest that there may be pending communication on the communicator when MPI_Comm_disconnect
is called.

A simple example that *could* be legal depending on the interpretation of the standard:

MPI_Isend (..., remote, ..., &req);

MPI_Comm_disconnect (remote);

MPI_Test (&req, &flag, ...);
assert (flag);

If 29-31 is correct this is illegal but if 41-43 is correct then the disconnect will complete
the request and flag will be set to true. I assume the second interpretation is correct since
MPI_Comm_disconnect would have the same semantics of MPI_Comm_free if all communication must
be complete. Am I wrong?

-Nathan Hjelm
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.mpi-forum.org/pipermail/mpi-forum/attachments/20131112/c6e3f6b7/attachment.pgp>

More information about the mpi-forum mailing list