-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Problem
The text in Example 12.4 states:
One can also have implementations where the call to
MPI_WIN_STARTreturns immediately, but
the return from the call toMPI_PUTis delayed until the matching call toMPI_WIN_POST
occurs; [...]
This generally conflicts with the notion that RMA communication calls are nonblocking (MPI 4.0, §12.3) and applies only to PSCW. Neither fence nor locks have similar verbiage in their normative text or example descriptions.
Proposal
Remove the sentence above from the text in Example 12.4.
This was discussed and discovered during the Forum discussion on semantic terms in the RMA chapter (https://github.com/mpi-forum/mpi-standard/pull/611). The WG generally agrees that communication functions should not block and in particular their behavior should be independent of the used synchronization method. Thus, the semantic terms fixes in https://github.com/mpi-forum/mpi-standard/pull/611 will depend on the resolution of this issue. If the Forum rejects this proposal, we will have to rephrase the description of RMA communication calls to add exceptions for some circumstances where communication calls may in fact wait for a call at the target to occur (e.g., when using PSCW). Since this is not just a change in the use of terms the WG feels that this should be addressed in a separate ticket.
Since this is a change to non-normative text I'm not sure whether this needs an entry in the backwards incompatibility chapter.
Changes to the Text
See above.
Impact on Implementations
Since this is part of non-normative text and the general introduction to communication calls states that they are nonblocking it is unlikely that they are nonblocking it is unlikely that implementations actually exhibit this behavior. However, implementations should check that delayed synchronization (if any) does not prevent communication calls from returning immediately (e.g., by storing a work request until the synchronization is complete and executing the operation afterwards).
Impact on Users
Clarity on which functions are allowed to block waiting for a call to occur at the target (synchronization calls) and which ones aren't (communication calls). Other than that there should be no discernible change in behavior to correct MPI applications.
References and Pull Requests
Related to https://github.com/mpi-forum/mpi-standard/pull/611
https://github.com/mpi-forum/mpi-standard/pull/671