[Mpi3-rma] Memory barriers in MPI_WIN_LOCK_ALL mode

Underwood, Keith D keith.d.underwood at intel.com
Mon Oct 29 22:59:47 CDT 2012


Doesn't that specific usage have undefined results?  (put/get targeting the same location during one epoch?)

> -----Original Message-----
> From: mpi3-rma-bounces at lists.mpi-forum.org [mailto:mpi3-rma-
> bounces at lists.mpi-forum.org] On Behalf Of Pavan Balaji
> Sent: Monday, October 29, 2012 11:39 PM
> To: mpi3-rma at lists.mpi-forum.org
> Subject: [Mpi3-rma] Memory barriers in MPI_WIN_LOCK_ALL mode
> 
> 
> Consider the following program:
> 
> P0:
> 	MPI_WIN_LOCK_ALL();
> 	MPI_PUT(1, X, P1); /* Write 1 to variable X on P1 */
> 	/* wave hand to P1 */
> 
> P1:
> 	MPI_WIN_LOCK_ALL();
> 	/* wait for P0 to wave hand */
> 	MPI_GET(X, P1);  /* local operation */
> 
> If the MPI_GET on P1 does a local load operation internally, it is not memory
> consistent without a memory barrier.  Does this mean that I need to always
> do a memory barrier on all local GET operations to get the right value?
> 
> Note that this inefficiency does not go away by replacing the waving of the
> hand with an MPI_BARRIER for example, as it does not know which window,
> if any, the synchronization is for.
> 
> Note that this is likely only a theoretical exercise, since most (all?) compilers
> will do a memory barrier anyway if they see a function call (MPI_GET in this
> case).  But is MPI assuming that that's going to be the case for efficient
> execution?
> 
>   -- Pavan
> 
> --
> Pavan Balaji
> http://www.mcs.anl.gov/~balaji
> _______________________________________________
> mpi3-rma mailing list
> mpi3-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma




More information about the mpiwg-rma mailing list