[Mpi3-rma] Memory barriers in MPI_WIN_LOCK_ALL mode

Jeff Hammond jhammond at alcf.anl.gov
Tue Oct 30 09:42:23 CDT 2012

>> Actually, the flush only needs to block till its visible to another MPI
>> RMA operation, not to the CPU (as in, not to load/store).
> In the unified memory model, it has to guarantee visibility to
> load/store operations as well.

MPI-3 11.4

"In the RMA unified model, public and private copies are identical and
updates via put or accumulate calls are eventually observed by load
operations without additional RMA calls. A store access to a window is
eventually visible to remote get or accumulate calls without
additional RMA calls. These stronger semantics of the RMA unified
model allow the user to omit some synchronization calls and
potentially improve performance."

The important word here is _eventually_.  The standard does not say

In both the separate and unified models, remote completion via e.g.
unlock ensures global visibility to all RMA operations _immediately_.

On the other hand, without an explicit RMA call, one has to assume
that visibility to load instructions is _not_ immediate and therefore
requires some additional synchronization mechanism is immediacy is

If you guys wanted RMA ops to ensure immediate visibility to load
instructions, you should have put that in the standard :-)


Jeff Hammond
Argonne Leadership Computing Facility
University of Chicago Computation Institute
jhammond at alcf.anl.gov / (630) 252-5381

More information about the mpiwg-rma mailing list