Description
Problem :
To achieve ordering for RMA operations between two PEs, the OpenSHMEM programs have to use shmem_fence. The shmem_fence routine, however, orders all RMA operations from the calling PE to all other PEs. Though this achieves the intended result, this is an expensive operation for unordered networks.
Proposal :
Introduce PE specific ordering routines that orders RMA operations from the calling PE to the target PE
shmem_pe_fence(target_pe)
shmem_ctx_pe_fence(ctx, target_pe)
Impact on Users:
This provides a light-weight alternative for shmem_fence if the OpenSHMEM programs desire an ordering guarantee only from the calling PE to a specific PE. There is no change in semantics for the current shmem_fence interface.
Impact on implementation:
Implementations will have to implement the new interface shmem_fence(target_pe) and its context variants shmem_ctx_fence(ctx, int target_pe).