[mpiwg-rma] Questions about multiple overlapped windows
Tatsuya Abe
abetatsuya at gmail.com
Tue Dec 9 20:47:06 CST 2014
>I would not worry about overlapping windows. Anyone using it is on
>their own anyways.
>There is none. It is merely something one can infer from the text of
>the standard.
>This paper might interest you then: http://htor.inf.ethz.ch/publications/index.php?pub=201 . It presents a formal model for MPI-3 RMA.
I'll read the text again, and try the paper. I'll send an e-mail to the ML if I have any question.
Thank you.
Tatsuya
Rajeev Thakur <thakur at mcs.anl.gov> wrote:
>> I am developing a program verification tool with memory consistency
>> models. As a first step, I try to formalize a part of MPI memory
>> consistency model, and enable it to handle one window.
>
>This paper might interest you then: http://htor.inf.ethz.ch/publications/index.php?pub=201 . It presents a formal model for MPI-3 RMA.
>
>Rajeev
>
>
>> ``However, concurrent communications to distinct, overlapping windows
>> may lead to undefined results.''[pg 406]
>>
>> Thank you for the detailed explanation and pointers.
>>
>> I am developing a program verification tool with memory consistency
>> models. As a first step, I try to formalize a part of MPI memory
>> consistency model, and enable it to handle one window.
>
>I would not worry about overlapping windows. Anyone using it is on
>their own anyways.
>
>>>>>Another reason is to allow ordered and unordered semantics. The
>>>>>option to control this happens during window construction and cannot
>>>>>be changed. If one wants one semantic (unordered) for performance and
>>>>>another (ordered) for correctness, then one needs two windows, one for
>>>>>each.
>>
>> It looks so interesting. I am wondering if you would give a
>> pointer/reference to usage of multiple windows for ordered and
>> unordered semantics. Thanks.
>
>There is none. It is merely something one can infer from the text of
>the standard.
>
>Jeff
>
>On Dec 9, 2014, at 3:59 AM, Tatsuya Abe <abetatsuya at gmail.com> wrote:
>
>> Hi Jeff and Rajeev,
>>
>>> My ticket would allow one to use MPI_WIN_ALLOCATE to get both
>>> intranode shared memory and internode RMA access.
>>
>>> See the text on lines 38-43 on pg 454 if it helps.
>>>
>>> See also ln 19-21 on pg 406.
>> ``However, concurrent communications to distinct, overlapping windows
>> may lead to undefined results.''[pg 406]
>>
>> Thank you for the detailed explanation and pointers.
>>
>> I am developing a program verification tool with memory consistency
>> models. As a first step, I try to formalize a part of MPI memory
>> consistency model, and enable it to handle one window.
>>
>>>>> Another reason is to allow ordered and unordered semantics. The
>>>>> option to control this happens during window construction and cannot
>>>>> be changed. If one wants one semantic (unordered) for performance and
>>>>> another (ordered) for correctness, then one needs two windows, one for
>>>>> each.
>>
>> It looks so interesting. I am wondering if you would give a
>> pointer/reference to usage of multiple windows for ordered and
>> unordered semantics. Thanks.
>>
>> Best,
>> Tatsuya
>>
>>
>> Jeff Hammond <jeff.science at gmail.com> wrote:
>>> On Mon, Dec 8, 2014 at 12:00 AM, Tatsuya Abe <abetatsuya at gmail.com> wrote:
>>>> Hi Jeff,
>>>>
>>>> Thank you so much for the reply.
>>>>
>>>>> A good example is using WIN_ALLOCATE_SHARED to create a shared memory
>>>>> window, then passing the resulting buffer into WIN_CREATE. This
>>>>> enables a window to support both intranode+interprocess load-store and
>>>>> internode RMA.
>>>>
>>>> Doesn't MPI_Win_allocate_shared support internode RMA, i.e., when I
>>>> create a window by using MPI_Win_allocate_shared, cannot I call
>>>> MPI_Put/MPI_Get for the window? I haven't found any description about
>>>> it in MPI 3.0 yet.
>>>
>>> WIN_ALLOCATE_SHARED is only valid on an MPI communicator corresponding
>>> to a shared memory domain, so no, it does not enable internode RMA
>>> unless you can do load-store between nodes.
>>>
>>> And yes, you can still use RMA function calls to access data in a
>>> shared memory window. This is essential, for example, if you want to
>>> use atomics, since some languages (e.g. C99) do not have a portable
>>> abstraction for these.
>>>
>>>> I am a little confused. Could you let me ask you more details?
>>>>
>>>> 1. Do you mean that another window must be created by MPI_Win_create,
>>>> in order to use MPI_Put/MPI_Get for a window created by
>>>> MPI_Win_allocate_shared? Is this why multiple windows are allowed
>>>> to be overlapped?
>>>
>>> Yes, but only for internode access, as noted above.
>>>
>>>> 2. Do you mean that the multiple overlapped windows (from
>>>> MPI_Win_allocate_shared and MPI_Win_create) become unnecessary in
>>>> this example if your ticket #397 passes?
>>>
>>> My ticket would allow one to use MPI_WIN_ALLOCATE to get both
>>> intranode shared memory and internode RMA access.
>>>
>>> Jeff
>>>
>>>> Tatsuya
>>>>
>>>>
>>>>
>>>> Jeff Hammond <jeff.science at gmail.com> wrote:
>>>>> On Sun, Dec 7, 2014 at 4:57 PM, Tatsuya Abe <abetatsuya at gmail.com> wrote:
>>>>>> Dear all,
>>>>>>
>>>>>> I am interested in memory consistency models, and studying program
>>>>>> verification with memory consistency models. I started to read MPI
>>>>>> 3.0 document (and Dr. Torsten Hoefler's tutorial slides).
>>>>>> http://www.eurompi2014.org/tutorials/hoefler-advanced-mpi-eurompi14.pdf
>>>>>>
>>>>>> I am wondering if you could give replies to my questions.
>>>>>> I have two questions about multiple overlapped windows:
>>>>>>
>>>>>> 1. (Assume that I create two overlapped windows.) What happens if I
>>>>>> do MPI_Put through one window and MPI_Get through the other window?
>>>>>
>>>>> It depends entirely on the synchronization epochs you use and whether
>>>>> the memory model provided is UNIFIED or SEPARATE.
>>>>>
>>>>>> 2. I am wondering what are multiple overlapped windows for.
>>>>>
>>>>> To work around obnoxious shortcomings of MPI RMA.
>>>>>
>>>>>> 1. I can find no description about the first question in MPI 3.0
>>>>>> document.
>>>>>>
>>>>>> I found Torsten's slides (credit by RMA Working Group, MPI Forum),
>>>>>> which explicitly showed relations between operations (Load, Store,
>>>>>> Get, Put, and Acc) on pp.82--84. But, it seems an explanation
>>>>>> when exactly one window is created,
>>>>>>
>>>>>> For example, page 83 of the slide seems to claim that Put and
>>>>>> Get are allowed when they are not NOVL (non-overlapped)
>>>>>> through one window in separate semantics.
>>>>>>
>>>>>> One of my questions is ``are Put and Get allowed when they are
>>>>>> not NOVL (non-overlapped) through *two* *overlapped* windows
>>>>>> in separate semantics?'' I would like to get such table about
>>>>>> multiple windows.
>>>>>
>>>>> Within the unified model, one can reason about overlapping windows by
>>>>> recognizing that the private windows of the overlapping windows are
>>>>> all the same and thus when one synchronizes the public and private
>>>>> windows of each window with WIN_SYNC, then all of the public windows
>>>>> are the same as well.
>>>>>
>>>>>> 2. I can find no example about multiple overlapped windows except
>>>>>> Figure 11.1 in MPI 3.0 document. Also, I suspect that Put and Get
>>>>>> are allowed when they are not NOVL (non-overlapped) through two
>>>>>> overlapped windows in separate semantics.
>>>>>>
>>>>>> I cannot come up with any useful example code. Why are multiple
>>>>>> *and* overlapped windows allowed to be active?
>>>>>
>>>>> A good example is using WIN_ALLOCATE_SHARED to create a shared memory
>>>>> window, then passing the resulting buffer into WIN_CREATE. This
>>>>> enables a window to support both intranode+interprocess load-store and
>>>>> internode RMA. It is useful if one wants to reproduce the behavior of
>>>>> e.g. ARMCI in implementing Global Arrays.
>>>>>
>>>>> The aforementioned motivation will disappear if my ticket
>>>>> https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/397 is passed and
>>>>> part of MPI-4.
>>>>>
>>>>> Another reason is to allow ordered and unordered semantics. The
>>>>> option to control this happens during window construction and cannot
>>>>> be changed. If one wants one semantic (unordered) for performance and
>>>>> another (ordered) for correctness, then one needs two windows, one for
>>>>> each.
>>>>>
>>>>> Jeff
>>>>>
>>>>> --
>>>>> Jeff Hammond
>>>>> jeff.science at gmail.com
>>>>> http://jeffhammond.github.io/
>>>
>>>
>>>
>>> --
>>> Jeff Hammond
>>> jeff.science at gmail.com
>>> http://jeffhammond.github.io/
>
More information about the mpiwg-rma
mailing list