<div dir="ltr">Hi Pavan,<br><div><br>Thanks a lot!<div><br></div><div>Now I make sense for MPI_Win_fence.<br><br></div><div>for hybrid RMA issue, did you mean in each rank, remote get the data into a shared memory, then threads in each rank load it by thread-level operation? <br>
<br></div><div>Thank you!<br></div><div>Sufeng<br></div><div><div class="gmail_extra"><br><br><br><div class="gmail_quote">On Fri, Jul 5, 2013 at 10:36 AM, Pavan Balaji <span dir="ltr"><<a href="mailto:balaji@mcs.anl.gov" target="_blank">balaji@mcs.anl.gov</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>
On 07/05/2013 10:28 AM, Sufeng Niu wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
1.<br>
MPI_Win_fence is not similar to MPI_Barrier in some cases.  The<br>
MPICH implementation can turn some calls into no-ops and others into<br>
MPI_Reduce_scatter.<br>
I am not quite sure about "turn some calls into no-ops and others into<br>
MPI_Reduce_scatter" Could you please give an example if possible?<br>
Another thing is if a process create a window for other process, but the<br>
data access is available after some operations. Should I use<br>
MPI_Win_fence or MPI_Barrier to sync? or other methods?<br>
</blockquote>
<br></div>
MPI_WIN_FENCE will make sure that all PUT/GET/ACCUMULATE operations are complete locally and remotely.  This is probably what you need.<br>
<br>
MPI_BARRIER is useless in this case since PUT/GET/ACCUMULATE can be nonblocking.<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2.<br>
Regarding "use MPI window as thread level", I really don't<br>
understand your thinking at all.  MPI RMA is not shared memory nor is<br>
MPI a threading model.<br>
Sorry for uncleared statements, right now I would like to do<br>
multithreads and MPI hybrid programming. let me give an example: I have<br>
3 processes, each one has 8 threads. thread 0 in process 0 creates a RMA<br>
window. if I would like all other threads to access it, should I use<br>
thread 0 in process 1, thread 0 in process 2 to MPI_Get the data from<br>
window, then use shared memory for internal threads to load the data? i<br>
am not sure what is the proper way for RMA in hybrid model.<br>
</blockquote>
<br></div>
All threads within the OS process are part of the same MPI rank.  Any of them can access the window as the same rank.<span><font color="#888888"><br>
<br>
 -- Pavan<br>
<br>
-- <br>
Pavan Balaji<br>
<a href="http://www.mcs.anl.gov/~balaji" target="_blank">http://www.mcs.anl.gov/~balaji</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>Best Regards,<div>Sufeng Niu</div><div>ECASP lab, ECE department, Illinois Institute of Technology</div><div>Tel: <a href="tel:312-731-7219" value="+13127317219" target="_blank">312-731-7219</a></div>

</div></div></div></div>