FYI, one argument (also used to force us to add restrictions on MPI persistent 
collective initialization to be blocking)... The MPI_Request_free on an NBC 
poses a problem for the cases where there are array types
posed (e.g., Alltoallv/w)... It will not be knowable to the application if the 
vectors are in use by MPI still after
the  free on an active request.  We do *not* mandate that the MPI 
implementation copy such arrays currently, so they are effectively "held as 
unfreeable" by the MPI implementation till MPI_Finalize.  The user cannot 
deallocate them in a correct program till after MPI_Finalize.

Another effect for NBC of releasing an active request, IMHO,  is that you don't 
know when send buffers are free to be deallocated or receive buffers are free 
to be deallocated... since you don't know when the transfer is complete OR the 
buffers are no longer used by MPI (till after MPI_Finalize).

Tony





Anthony Skjellum, PhD

Professor of Computer Science and Chair of Excellence

Director, SimCenter

University of Tennessee at Chattanooga (UTC)

tony-skjel...@utc.edu  [or skjel...@gmail.com]

cell: 205-807-4968


________________________________
From: mpi-forum <mpi-forum-boun...@lists.mpi-forum.org> on behalf of Jeff 
Hammond via mpi-forum <mpi-forum@lists.mpi-forum.org>
Sent: Saturday, August 8, 2020 12:07 PM
To: Main MPI Forum mailing list <mpi-forum@lists.mpi-forum.org>
Cc: Jeff Hammond <jeff.scie...@gmail.com>
Subject: Re: [Mpi-forum] MPI_Request_free restrictions

We should fix the RMA chapter with an erratum. I care less about NBC but share 
your ignorance of why it was done that way.

Sent from my iPhone

On Aug 8, 2020, at 6:51 AM, Balaji, Pavan via mpi-forum 
<mpi-forum@lists.mpi-forum.org> wrote:

 Folks,

Does someone remember why we disallowed users from calling MPI_Request_free on 
nonblocking collective requests?  I remember the reasoning for not allowing 
cancel (i.e., the operation might have completed on some processes, but not 
all), but not for Request_free.  AFAICT, allowing the users to free the request 
doesn’t make any difference to the MPI library.  The MPI library would simply 
maintain its own refcount to the request and continue forward till the 
operation completes.  One of our users would like to free NBC requests so they 
don’t have to wait for the operation to complete in some situations.

Unfortunately, when I added the Rput/Rget operations in the RMA chapter, I 
copy-pasted that text into RMA as well without thinking too hard about it.  My 
bad!  Either the RMA committee missed it too, or they thought of a reason that 
I can’t think of now.

Can someone clarify or remind me what the reason was?

Regards,

  — Pavan

MPI-3.1 standard, page 197, lines 26-27:

“It is erroneous to call MPI_REQUEST_FREE or MPI_CANCEL for a request 
associated with a nonblocking collective operation.”

_______________________________________________
mpi-forum mailing list
mpi-forum@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum
_______________________________________________
mpi-forum mailing list
mpi-forum@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum

Reply via email to