Re: [mpiwg-rma] Questions about multiple overlapped windows
On Sun, Dec 7, 2014 at 4:57 PM, Tatsuya Abe <[email protected]> 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 [email protected] http://jeffhammond.github.io/
participants (1)
-
Jeff Hammond