[mpiwg-rma] Inconsistency of MPI_WIN_FENCE semantic

Zhao, Xin xinzhao3 at illinois.edu
Tue Feb 25 22:40:40 CST 2014


I mean, why not the example to be just like: 

Fence
if (rank == 0) {PUT(to rank 1);}
Fence
Get (from rank 1);
Fence

Xin
________________________________________
From: mpiwg-rma [mpiwg-rma-bounces at lists.mpi-forum.org] on behalf of Balaji, Pavan [balaji at anl.gov]
Sent: Tuesday, February 25, 2014 10:38 PM
To: MPI WG Remote Memory Access working group
Subject: Re: [mpiwg-rma] Inconsistency of MPI_WIN_FENCE semantic

What do you mean?  Passive target epoch.

  — Pavan

On Feb 25, 2014, at 10:36 PM, Zhao, Xin <xinzhao3 at illinois.edu> wrote:

> What's the purpose of LOCK/UNLOCK?
> ________________________________________
> From: mpiwg-rma [mpiwg-rma-bounces at lists.mpi-forum.org] on behalf of Balaji, Pavan [balaji at anl.gov]
> Sent: Tuesday, February 25, 2014 10:30 PM
> To: MPI WG Remote Memory Access working group
> Subject: Re: [mpiwg-rma] Inconsistency of MPI_WIN_FENCE semantic
>
> Whoops, sorry, I meant to add a LOCK/UNLOCK in there.  Here’s the updated example:
>
> Fence
> if (rank == 0) { LOCK; PUT(to rank 1); UNLOCK; }
> Fence
> Get(from rank 1)
> Fence
>
>  — Pavan
>
> On Feb 25, 2014, at 10:28 PM, Zhao, Xin <xinzhao3 at illinois.edu> wrote:
>
>> Hi Pavan,
>>
>> Is Get posted on rank 0 or rank 1? Also Flush is only used for passive target.
>>
>> Xin
>>
>> ________________________________________
>> From: mpiwg-rma [mpiwg-rma-bounces at lists.mpi-forum.org] on behalf of Balaji, Pavan [balaji at anl.gov]
>> Sent: Tuesday, February 25, 2014 10:22 PM
>> To: MPI WG Remote Memory Access working group
>> Subject: Re: [mpiwg-rma] Inconsistency of MPI_WIN_FENCE semantic
>>
>> Your example is too simplistic.  Here’s another example —
>>
>> Fence
>> if (rank == 0) { PUT(to rank 1); Flush }
>> Fence
>> Get
>> Fence
>>
>> Without barrier semantics, the above program will lead to incorrect results if GET is expecting to see the value deposited by the PUT.  Are you saying this is an incorrect program?  I’m not sure I agree with that.
>>
>> The standard states that FENCE does not have barrier semantics when NOPRECEDE is given.  I think the intention here was to say that it does have barrier semantics when that assertion is not given.
>>
>> — Pavan
>>
>> On Feb 25, 2014, at 10:10 PM, Rajeev Thakur <thakur at mcs.anl.gov> wrote:
>>
>>> The second sentence refers to case where there are a sequence of fences
>>>
>>> Fence
>>> Fence
>>> Put
>>> Fence
>>>
>>> The second fence above need not be a barrier particularly if it had a NOPRECEDE.
>>>
>>>
>>> Note that in a fence-put-fence you are allowed to do a barrier in the first fence, but you are not required to. You can do a deferred mode where the first fence is a no-op, all RMA ops are queued, and everything is done in the second fence and determining that all processes have reached there.
>>>
>>> Rajeev
>>>
>>>
>>>
>>> On Feb 25, 2014, at 9:48 PM, "Balaji, Pavan" <balaji at anl.gov>
>>> wrote:
>>>
>>>>
>>>> Besides, the second sentence says, if MPI_MODE_NOPRECEDE is given, it’ll not act as a barrier.
>>>>
>>>> What’s the necessity for that if WIN_FENCE does not act as a barrier even when MPI_MODE_NOPRECEDE is not given.
>>>>
>>>> — Pavan
>>>>
>>>> On Feb 25, 2014, at 9:38 PM, Balaji, Pavan <balaji at anl.gov> wrote:
>>>>
>>>>>
>>>>> In practice, it’ll need to have barrier semantics.  Otherwise, PUT will need to be a two-sided operation to ensure that it’s not issued before the other process calls MPI_WIN_FENCE.
>>>>>
>>>>> — Pavan
>>>>>
>>>>> On Feb 25, 2014, at 9:21 PM, Rajeev Thakur <thakur at mcs.anl.gov> wrote:
>>>>>
>>>>>>> (1) On P440-P441 it say that "RMA operations on win started by a process after the fence call returns will access their target window only after MPI_WIN_FENCE has been called by the target process". This requires MPI_WIN_FENCE that starts an epoch to act as an barrier.
>>>>>>
>>>>>> It only says "RMA operations on win started by a process after the fence call returns will access their target window only after MPI_WIN_FENCE has been called by the target process".   NOT   "This requires MPI_WIN_FENCE that starts an epoch to act as an barrier."
>>>>>>
>>>>>> Why does the fence have to act as a barrier. The handshake could be done when first RMA operation is called after the fence.
>>>>>>
>>>>>> Rajeev
>>>>>>
>>>>>>
>>>>>> On Feb 25, 2014, at 8:41 PM, "Zhao, Xin" <xinzhao3 at illinois.edu> wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> There is an inconsistency of MPI_WIN_FENCE semantic in MPI 3.0 Standard that makes me confused:
>>>>>>>
>>>>>>> (1) On P440-P441 it say that "RMA operations on win started by a process after the fence call returns will access their target window only after MPI_WIN_FENCE has been called by the target process". This requires MPI_WIN_FENCE that starts an epoch to act as an barrier.
>>>>>>>
>>>>>>> (2) However, (1) contradict with the word at end of P441: "a call to MPI_WIN_FENCE that is known not to end any epoch (in particular a call with assert equal to MPI_MODE_NOPRECEDE) does not necessarily act as a barrier".
>>>>>>>
>>>>>>> Should the word of (1) add: "when MPI_MODE_NOPRECEDE is not given"?
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Xin
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> mpiwg-rma mailing list
>>>>>>> mpiwg-rma at lists.mpi-forum.org
>>>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>>>>>>
>>>>>> _______________________________________________
>>>>>> mpiwg-rma mailing list
>>>>>> mpiwg-rma at lists.mpi-forum.org
>>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>>>>>
>>>>> _______________________________________________
>>>>> mpiwg-rma mailing list
>>>>> mpiwg-rma at lists.mpi-forum.org
>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>>>>
>>>> _______________________________________________
>>>> mpiwg-rma mailing list
>>>> mpiwg-rma at lists.mpi-forum.org
>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>>>
>>> _______________________________________________
>>> mpiwg-rma mailing list
>>> mpiwg-rma at lists.mpi-forum.org
>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>>
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma

_______________________________________________
mpiwg-rma mailing list
mpiwg-rma at lists.mpi-forum.org
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma



More information about the mpiwg-rma mailing list