[Mpi-forum] [EXT]: Progress Question

Skjellum, Anthony Tony-Skjellum at utc.edu
Sat Oct 10 13:17:00 CDT 2020


Jim, OK, my attempt at answering below.

See if you agree with my annotations.

-Tony



Anthony Skjellum, PhD

Professor of Computer Science and Chair of Excellence

Director, SimCenter

University of Tennessee at Chattanooga (UTC)

tony-skjellum at utc.edu  [or skjellum at gmail.com]

cell: 205-807-4968


________________________________
From: mpi-forum <mpi-forum-bounces at lists.mpi-forum.org> on behalf of Jim Dinan via mpi-forum <mpi-forum at lists.mpi-forum.org>
Sent: Saturday, October 10, 2020 1:31 PM
To: Main MPI Forum mailing list <mpi-forum at lists.mpi-forum.org>
Cc: Jim Dinan <james.dinan at gmail.com>
Subject: [EXT]: [Mpi-forum] Progress Question

External Email
Hi All,

A colleague recently asked a question that I wasn't able to answer definitively. Is the following code guaranteed to make progress?

MPI_Barrier();
-- everything is uncertain to within one message, if layered on pt2pt;
--- let's assume a power of 2, and recursive doubling (RD).
--- At each stage, it posts an irecv and isend to its corresponding element in RD
--- All stages must complete to get to the last stage.
--- At the last stage, it appears like your example below for N/2 independent process pairs, which appears always to complete.
Oif rank == 1
  create_file("test")
if rank == 0
   while not_exists("test")
       sleep(1);

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:

isend(..., other_rank, &req[0])
irecv(..., other_rank, &req[1])
waitall(2, req)
--- Assume both isends buffer on the send-side and return immediately--valid.
--- Both irecvs are posted, but unmatched as yet.  Nothing has transferred on network.
--- Waitall would mark the isends done at once, and work to complete the irecvs; in
     that process, each would have to progress the isends across the network. On this comm
     and all comms, incidentally.
--- When waitall returns, the data has transferred to the receiver, otherwise the irecvs
      aren't done.
if rank == 1
  create_file("test")
if rank == 0
   while not_exists("test")
       sleep(1);

I think it would clearly not guarantee progress since the send data can be buffered. Is the same true for barrier?

Cheers,
 ~Jim.
This message is not from a UTC.EDU address. Caution should be used in clicking links and downloading attachments from unknown senders or unexpected email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpi-forum/attachments/20201010/6575b284/attachment.html>


More information about the mpi-forum mailing list