[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:
P0:
Win_lock_all
Put(a, P1)
Flush
MPI_Send(P1, flag)
P1:
Win_lock_all
MPI_Recv(P0, flag)
read a
-- Pavan
--
Pavan Balaji
http://www.mcs.anl.gov/~balaji
More information about the mpiwg-rma
mailing list