Open mpiforumbot opened 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.
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.