Skip to content

Example 12.4: RMA communication calls may not block in PSCW #555

@devreal

Description

@devreal

Problem

The text in Example 12.4 states:

One can also have implementations where the call to MPI_WIN_START returns immediately, but
the return from the call to MPI_PUT is delayed until the matching call to MPI_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

Metadata

Metadata

Assignees

Labels

[done] mpi-4.1For inclusion in the MPI 4.1 standardchap-rmaRMA Chapter Committeehad readingCompleted the formal proposal readingpassed final votePassed the final formal votepassed first votePassed the first formal votewg-rmaRMA Working Group

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions