mpi-forum / mpi-forum-historic

Migration of old MPI Forum Trac Tickets to GitHub. New issues belong on mpi-forum/mpi-issues.
http://www.mpi-forum.org
2 stars 3 forks source link

MPI_START(ALL) restrictions #471

Open mpiforumbot opened 8 years ago

mpiforumbot commented 8 years ago

Originally by jhammond on 2015-01-16 00:45:30 -0600


In MPI-3 12.4.2 (page 483), it says:

-Multiple threads completing the same request.* A program in which two threads block, waiting on the same request, is erroneous. Similarly, the same request cannot appear in the array of requests of two concurrent MPI_{WAIT|TEST}{ANY|SOME|ALL} calls. In MPI, a request can only be completed once. Any combination of wait or test that violates this rule is erroneous.

I think the omission of MPI_START(ALL) here is an unintended omission. It does not make sense to start a request more than once in a sequence (i.e. without completing it prior to subsequently starting it again).

The following text includes two changes: one to include MPI_STARTALL as an operation on arrays of requests in which duplicates cannot appear and a second to clarify the meaning of the complete-once semantic for persistent requests.

-Multiple threads starting or completing the same request.* A program in which two threads block, waiting on the same request, is erroneous. Similarly, the same request cannot appear in the array of requests of two concurrent MPISTARTALL and MPI{WAIT|TEST}{ANY|SOME|ALL} calls.
In MPI, a request can only be completed once; for persistent requests, this means that an active request can only be completed once. Furthermore, an inactive request can be started only once (pg. 77 line 28-29). Any combination of start, wait or test that violates this rule is erroneous.

mpiforumbot commented 8 years ago

Originally by bosilca on 2015-01-16 14:52:53 -0600


Page 78 line 23 clarifies

If the same communication object is used in several concurrent threads, it is the user’s responsibility to coordinate calls so that the correct sequence is obeyed.