This is allowable by the MPI API. You're specifically telling MPI "I
don't care to know when that send has completed." See the section for
It's debatable whether that's good programming practice or not (IMHO),
but it is allowable. :-)
Note that there is a clarification going on in the MPI-2.2
standardization process such that it may well be impossible to know
when a request has completed if you use this pattern (freeing the
request before testing for completion). The current MPI-2.0 (and soon-
to-be-published 2.1) spec says that you can know when it has completed
by the presence of another event, such as receiving a message from a
peer that implies that they must have received the send that you
sent. But this may not always be true -- successful completion of a
receive, even from a peer process that must have received your send,
does *not* imply successful completion of your send request. The
local side may still be doing some internal processing such that your
send request has not completed yet. For example, if the local side is
still freeing registered memory, it would be disastrous for the user
to free() the memory.
On Aug 15, 2008, at 6:17 PM, Hartzman, Les (MS) wrote:
> Im looking over some MPI code and saw something that concerned me.
> Being a bit new to MPI I dont know if this is a bug or normal.
> A call to MPI_Isend was made and followed by an MPI_Reqest_free on
> the exact same request handle used in the Isend call. I saw the same
> thing for ISsend.
> Is this normal or is the person/persons doing this taking changes
> that all will work without ever checking for the completion of the
> issued Sends?
> Thanks in advance.
> users mailing list