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 MPI_REQUEST_FREE here:

    http://www.mpi-forum.org/docs/mpi-11-html/node47.html#Node47

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:


Hello,

I’m looking over some MPI code and saw something that concerned me. Being a bit new to MPI I don’t 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.

Les

_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users


--
Jeff Squyres
Cisco Systems


Reply via email to