[mpi3-coll] Non-blocking Collectives Proposal Draft

Supalov, Alexander alexander.supalov at intel.com
Fri Oct 17 10:24:58 CDT 2008

Got it, thanks.

-----Original Message-----
From: mpi3-coll-bounces at lists.mpi-forum.org
[mailto:mpi3-coll-bounces at lists.mpi-forum.org] On Behalf Of Torsten
Sent: Friday, October 17, 2008 3:48 PM
To: MPI-3 Collective Subgroup Discussions
Subject: Re: [mpi3-coll] Non-blocking Collectives Proposal Draft

> 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

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


 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
mpi3-coll mailing list
mpi3-coll at lists.mpi-forum.org
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen Germany
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Douglas Lusk, Peter Gleissner, Hannes Schwaderer
Registergericht: Muenchen HRB 47456 Ust.-IdNr.
VAT Registration No.: DE129385895
Citibank Frankfurt (BLZ 502 109 00) 600119052

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

More information about the mpiwg-coll mailing list