Re: [mpi3-coll] Non-blocking Collectives Proposal Draft
Got it, thanks. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Torsten Hoefler Sent: Friday, October 17, 2008 3:48 PM To: MPI-3 Collective Subgroup Discussions Subject: Re: [mpi3-coll] Non-blocking Collectives Proposal Draft 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 _______________________________________________ mpi3-coll mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-coll --------------------------------------------------------------------- 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.
participants (1)
-
Supalov, Alexander