<div dir="ltr">Jeff,<div><br></div><div>Sorry, I haven't read the whole thread closely, so please ignore me if this is nonsense.  Can you get what you want by doing MPI_Win_allocate_shared() to create an intranode window, and then pass the buffer allocated by MPI_Win_allocate_shared to MPI_Win_create() to create an internode window?</div>
<div><br></div><div> ~Jim.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Oct 12, 2013 at 3:49 PM, Jeff Hammond <span dir="ltr"><<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Pavan told me that (in MPICH) MPI_Win_allocate is way better than<br>
MPI_Win_create because the former allocates the shared memory<br>
business.  It was implied that the latter requires more work within<br>
the node. (I thought mmap could do the same magic on existing<br>
allocations, but that's not really the point here.)<br>
<br>
But within a node, what's even better than a window allocated with<br>
MPI_Win_allocate is a window allowed with MPI_Win_allocate_shared,<br>
since the latter permits load-store.  Then I wondered if it would be<br>
possible to have both (1) direct load-store access within a node and<br>
(2) scalable metadata for windows spanning many nodes.<br>
<br>
I can get (1) but not (2) by using MPI_Win_allocate_shared and then<br>
dropping a second window for the internode part on top of these using<br>
MPI_Win_create.  Of course, I can get (2) but not (1) using<br>
MPI_Win_allocate.<br>
<br>
I propose that it be possible to get (1) and (2) by allowing<br>
MPI_Win_shared_query to return pointers to shared memory within a node<br>
even if the window has MPI_WIN_CREATE_FLAVOR=MPI_WIN_FLAVOR_ALLOCATE.<br>
When the input argument rank to MPI_Win_shared_query corresponds to<br>
memory that is not accessible by load-store, the out arguments size<br>
and baseptr are 0 and NULL, respectively.<br>
<br>
The non-scalable use of this feature would be to loop over all ranks<br>
in the group associated with the window and test for baseptr!=NULL,<br>
while the scalable use would presumably utilize MPI_Comm_split_type,<br>
MPI_Comm_group and MPI_Group_translate_ranks to determine the list of<br>
ranks corresponding to the node, hence the ones that might permit<br>
direct access.<br>
<br>
Comments are appreciate.<br>
<span class="HOEnZb"><font color="#888888"><br>
Jeff<br>
<br>
--<br>
Jeff Hammond<br>
<a href="mailto:jeff.science@gmail.com">jeff.science@gmail.com</a><br>
_______________________________________________<br>
mpiwg-rma mailing list<br>
<a href="mailto:mpiwg-rma@lists.mpi-forum.org">mpiwg-rma@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma</a><br>
</font></span></blockquote></div><br></div>