[mpiwg-rma] Questions about multiple overlapped windows
Jeff Hammond
jeff.science at gmail.com
Sun Dec 7 19:11:30 CST 2014
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/
More information about the mpiwg-rma
mailing list