[mpi3-coll] Non-blocking Collectives Proposal Draft

Torsten Hoefler htor at cs.indiana.edu
Fri Oct 17 08:47:53 CDT 2008


Hello,
> Thanks. You probably meant Recv(0) in Proc 1. I also miss a Wait for
> req_r. So, a complete example would probably look like:
> 
> Proc 0                  Proc 1
> 
> Irecv(1,req_r)          Irecv(0,req_r)
> Isend(1,req_s)          Isend(0,req_s)
> Waitall(req_s, req_r)   Recv(0)
> Send(1)                 Waitall(req_s,req_r)
> 
> This would work. However, let's do one change, replacing Isend by
> Issend. Will this still work?
> 
> Irecv(1,req_r)          Irecv(0,req_r)
> Issend(1,req_s)         Issend(0,req_s)
> Waitall(req_s, req_r)   Recv(0)
> Send(1)                 Waitall(req_s,req_r)
sorry for joining in so late - it was night here. So I would still say
that it doesn't deadlock - in the send/recv as well as in the collective
case.

Actually, from a correctness perspective, I see no difference between
Rich's Isend() and your Issend() example because an MPI implementation
is free to implement Isend() with Issend() (rendezvous protocol). Thus,
implementers have to assume the worst case.

To your example:
- the process 1 is required to progress *all* outstanding operations
  while it is in Recv(0)
- this enables the Waitall(req_s, req_r) on proc 0 to complete and proc
  0 postes the send

This is required by the MPI-2.1 standard afaik.

> Another possible complication: let's swap the Send and Recv, and make
> Send synchronous (or rendezvous):
> 
> Irecv(1,req_r)          Irecv(0,req_r)
> Issend(1,req_s)         Issend(0,req_s)
> Waitall(req_s, req_r)   Ssend(0)
> Recv(1)                 Waitall(req_s,req_r)
> 
> Here I have rather strong doubts that this will work. Do you?
It's the same thing, Ssend will also have to progress the other
requests.

Best,
  Torsten

-- 
 bash$ :(){ :|:&};: --------------------- http://www.unixer.de/ -----
Torsten Hoefler       | Postdoctoral Researcher
Open Systems Lab      | Indiana University    
150 S. Woodlawn Ave.  | Bloomington, IN, 474045, USA
Lindley Hall Room 135 | +01 (812) 855-3608



More information about the mpiwg-coll mailing list