<div dir="ltr">You can have a situation where the isend/irecv pair completes at process 0 before process 1 has called irecv or waitall. Since process 0 is now busy waiting on the file, it will not make progress on MPI calls and can result in deadlock.<div><br></div><div> ~Jim.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Oct 10, 2020 at 2:17 PM Skjellum, Anthony <<a href="mailto:Tony-Skjellum@utc.edu">Tony-Skjellum@utc.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Jim, OK, my attempt at answering below.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
See if you agree with my annotations.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
-Tony</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div id="gmail-m_-4671823654087486545Signature">
<div>
<div id="gmail-m_-4671823654087486545divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif">
<p style="margin-top:0px;margin-bottom:0px">Anthony Skjellum, PhD</p>
<p style="margin-top:0px;margin-bottom:0px">Professor of Computer Science and Chair of Excellence</p>
<p style="margin-top:0px;margin-bottom:0px">Director, SimCenter</p>
<p style="margin-top:0px;margin-bottom:0px">University of Tennessee at Chattanooga (UTC)</p>
<p style="margin-top:0px;margin-bottom:0px"><a href="mailto:tony-skjellum@utc.edu" target="_blank">tony-skjellum@utc.edu</a>  [or <a href="mailto:skjellum@gmail.com" target="_blank">skjellum@gmail.com</a>]</p>
<p style="margin-top:0px;margin-bottom:0px">cell: 205-807-4968</p>
<p style="margin-top:0px;margin-bottom:0px"><br>
</p>
</div>
</div>
</div>
</div>
<div id="gmail-m_-4671823654087486545appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_-4671823654087486545divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> mpi-forum <<a href="mailto:mpi-forum-bounces@lists.mpi-forum.org" target="_blank">mpi-forum-bounces@lists.mpi-forum.org</a>> on behalf of Jim Dinan via mpi-forum <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>><br>
<b>Sent:</b> Saturday, October 10, 2020 1:31 PM<br>
<b>To:</b> Main MPI Forum mailing list <<a href="mailto:mpi-forum@lists.mpi-forum.org" target="_blank">mpi-forum@lists.mpi-forum.org</a>><br>
<b>Cc:</b> Jim Dinan <<a href="mailto:james.dinan@gmail.com" target="_blank">james.dinan@gmail.com</a>><br>
<b>Subject:</b> [EXT]: [Mpi-forum] Progress Question</font>
<div> </div>
</div>
<div>
<table id="gmail-m_-4671823654087486545x_header-notice" cellspacing="”0″" cellpadding="”0″" border="”0″" style="font-size:18px;background-color:rgb(253,183,54);width:100%;text-align:center">
<tbody>
<tr>
<td style="color:rgb(17,46,81)"><strong>External Email</strong></td>
</tr>
</tbody>
</table>
<div>
<div dir="ltr">Hi All,
<div><br>
</div>
<div>A colleague recently asked a question that I wasn't able to answer definitively. Is the following code guaranteed to make progress?</div>
<div><br>
</div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div>MPI_Barrier();</div>
<div>-- everything is uncertain to within one message, if layered on pt2pt;</div>
<div>--- let's assume a power of 2, and recursive doubling (RD).</div>
<div>--- At each stage, it posts an irecv and isend to its corresponding element in RD</div>
<div>--- All stages must complete to get to the last stage.</div>
<div>--- At the last stage, it appears like your example below for N/2 independent process pairs, which appears always to complete.</div>
<div>Oif rank == 1</div>
<div>  create_file("test")</div>
<div>if rank == 0</div>
<div>   while not_exists("test")</div>
<div>       sleep(1);</div>
</blockquote>
<div><br>
</div>
<div>That is, can rank 1 require rank 0 to make MPI calls after its return from the barrier, in order for rank 1 to complete the barrier? If the code were written as follows:</div>
<div><br>
</div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div>isend(..., other_rank, &req[0])</div>
<div>irecv(..., other_rank, &req[1])</div>
<div>waitall(2, req)</div>
<div>--- Assume both isends buffer on the send-side and return immediately--valid.</div>
<div>--- Both irecvs are posted, but unmatched as yet.  Nothing has transferred on network.</div>
<div>--- Waitall would mark the isends done at once, and work to complete the irecvs; in</div>
<div>     that process, each would have to progress the isends across the network. On this comm</div>
<div>     and all comms, incidentally.  </div>
<div>--- When waitall returns, the data has transferred to the receiver, otherwise the irecvs </div>
<div>      aren't done.</div>
<div>if rank == 1</div>
<div>  create_file("test")</div>
<div>if rank == 0</div>
<div>   while not_exists("test")</div>
<div>       sleep(1);</div>
</blockquote>
<br>
<div>I think it would clearly not guarantee progress since the send data can be buffered. Is the same true for barrier?</div>
<div><br>
</div>
<div>Cheers,</div>
<div> ~Jim.</div>
</div>
</div>
<table id="gmail-m_-4671823654087486545x_footer-notice" cellspacing="”0″" cellpadding="”0″" border="”0″" style="font-size:18px;background-color:rgb(253,183,54);width:100%;text-align:center">
<tbody>
<tr>
<td style="color:rgb(17,46,81)"><strong>This message is not from a <a href="http://UTC.EDU" target="_blank">UTC.EDU</a> address. Caution should be used in clicking links and downloading attachments from unknown senders or unexpected email.
</strong></td>
</tr>
</tbody>
</table>
</div>
</div>

</blockquote></div>