[Mpi3-rma] MPI-3 UNIFIED model clarification

Pavan Balaji balaji at mcs.anl.gov
Mon Jul 29 22:51:17 CDT 2013

On 07/29/2013 10:48 PM, Underwood, Keith D wrote:
>> On 07/29/2013 10:18 PM, Underwood, Keith D wrote:
>>> And, um, technically, if loads can be hoisted  across the
>>> MPI_Recv, then the MPI_Recv semantics are incorrect and  you have
>>> to have a memory barrier in MPI_Recv.
>> Why is reordering not permitted for two unrelated memory loads?
>> AFAIK, ARM allows that.
> I'm talking about a load of the data written for the MPI_Recv getting
> hoisted across MPI_Recv.  There is no guarantee of anything in that
> MPI_Recv actually touching the data being received.  There is no
> guarantee of anything telling the microarchitecture that you are
> doing an illegal hoist across that receive.

No, we are obviously not talking about data reordering for dependent 
data.  In the example I gave, the recv of some other data is essentially 
a flag for me to tell that the origin has flushed some data to the 
target.  Here's the example again:

Put(a, P1)
MPI_Send(P1, flag)

MPI_Recv(P0, flag)
read a

  -- Pavan

Pavan Balaji

More information about the mpiwg-rma mailing list