Open jdinan opened 8 years ago
Comments copied from Trac:
Status update: Roughly the same as it was at the June 2015 meeting -- need a strong driver to introduce this new feature and a performance comparison to show that notified RMA performs better than other approaches (e.g. send/recv, active target, etc.).
Problem Statement
In passive target mode, notifying the target that data has been transmitted is currently inefficient. It requires sending additional messages after operations that are to be notified have been remotely completed.
Window Counter Solution 1: Sync-and-Notify
Addition of new "synchronize-and-notify" routines:
A notification counter is associated with the window, and is incremented at the target after the given passive target epoch has completed at the target (i.e. data is visible to the target process). Get, set, and wait functions are provided to enable a process to query the number of notifications it has received.
Criticism: Since the notification is separate from communication operations, e.g. put-and-notify, this can require two separate operations, which will not improve performance.
Window Counter Solution 2: Op-and-Notify
Addition of new "communicate-and-notify" routines:
A notification counter is associated with the window, and is incremented at the target after the given RMA operation has completed at the target (i.e. data is visible to the target process). Get, set, and wait functions are provided to enable a process to query the number of notifications it has received.
Criticism: Only one counter per window.
Matched Notifications
This adds a "tag" to RMA operations and introduces target-side synchronization operations that query for operations matching a particular tag. Communication routines look as follows:
Synchronization APIs are as follows:
Positives: Most general proposal, enables arbitrary synchronization DAGs. Negatives: Introduces tag matching to RMA and need to deal with unexpected synchronization events. For past discussion, see: 09-2015 -- RMA Notified Access Implementation Discussion.pdf
Memory Synchronization: Put-and-Nofity (OpenSHMEM Style)
Put and notify operations have been supported for a while in Cray SHMEM. Recently they have been proposed for OpenSHMEM 1.5 (https://github.com/openshmem-org/specification/issues/206, https://github.com/openshmem-org/specification/pull/218, https://github.com/openshmem-org/specification/pull/244). The API signature is as follows:
The
sig_target
location is updated after the update to target is visible. Thesig_target
location is checked locally using ashmem_wait_until
operation or remotely using ashmem_atomic_fetch
operation.Positives: This is the only proposal that supports directly third-party producer-consumer relationships. Negatives: Significantly expands the scope of the memory model and requires test/wait routines to be introduced.
References