[mpi3-coll] Nonblocking collectives standard draft

Greg Bronevetsky bronevetsky1 at llnl.gov
Mon Nov 24 23:34:09 CST 2008

>- another argument _for_ MPI_REQUEST_FREE is the existence of 
>intercommunicators where all processes (i.e., in group A and in 
>group B) have to call the collective but only part of them might be 
>involved (e.g., for MPI_IBCAST all but the root process in group A 
>don't really participate in the operation - they pass MPI_PROC_NULL 
>as root argument). So having a lightweight MPI_Wait alternative 
>might not be too bad ...

I would argue against MPI_Request_free in general for both 
point-to-point and collective operations. For one thing, if there is 
an error during the operation, MPI has no logical place to deliver 
this notification. Another reason is that on single-threaded 
architectures (BG/L CNK, Cray Catamount) it is completely possible 
for the non-blocking to not complete until MPI_Finalize because the 
application is not required to issue any more MPI calls during which 
progress may be made on the communication. At least if we have no 
MPI_Request_free the user is eventually required to call MPI_Test or 
MPI_Wait to ensure progress. I can go on but MPI_Request_free is bad.

Having said that, I object to the text that explains the reasoning 
for removing MPI_Request_free on page 50 for exactly the reason 
above. We shouldn't have MPI_Request_free because its generally bad.

Greg Bronevetsky
Post-Doctoral Researcher
1028 Building 451
Lawrence Livermore National Lab
(925) 424-5756
bronevetsky1 at llnl.gov 

More information about the mpiwg-coll mailing list