<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:0 0 0 40px;border:none;padding:0px"><div>MPI_Barrier();</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><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:0 0 0 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>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>