[Mpi-forum] MPI_Request_free restrictions

Jeff Hammond jeff.science at gmail.com
Wed Aug 12 17:03:48 CDT 2020


Does anybody implement RMA and NBC requests differently from P2P ones such
that this matters?  How would an implementation support a different type of
request for NBC+RMA than P2P?  If an MPI_Request has to be a reference for
P2P, how is it going to also support the not-a-reference case?  I can
imagine a union of P2P_Reference, RMA_Object_itself, and NBC_Object_itself,
but seems like it would blow up the memory requirements for a vector of
MPI_Requests if RMA_Object_itself or NBC_Object_itself are larger than 8
bytes.

I wonder if it is even a good idea to not maintain a reference to the
request.  In implementations that do not implement passive progress on
everything, how does the progress engine know to poke an NBC request if
there isn't an implementation of it in the queue?

Jeff

On Wed, Aug 12, 2020 at 1:51 PM Jim Dinan <james.dinan at gmail.com> wrote:

> IIRC, the argument for RMA was that we had not wanted to require the MPI
> library to maintain a reference to the request. There could be many RMA
> operations pending and the MPI library maintaining a list of pending
> operations could be a significant source of overhead. I seem to recall this
> having been the general sentiment at the time and it may have also applied
> to NBC.
>
>  ~Jim.
>
> On Sat, Aug 8, 2020 at 7:15 PM Jeff Hammond via mpi-forum <
> mpi-forum at lists.mpi-forum.org> wrote:
>
>> 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 at 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 at lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpi-forum
>>
>> _______________________________________________
>> mpi-forum mailing list
>> mpi-forum at lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpi-forum
>>
>

-- 
Jeff Hammond
jeff.science at gmail.com
http://jeffhammond.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpi-forum/attachments/20200812/d427ae74/attachment.html>


More information about the mpi-forum mailing list