[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Generalized Request Progress



Hubert Ritzdorf wrote:
Thus, the behaviour of the MPI implementations which wait for the "separate receive complete call"
(or other MPI communication calls such as MPI_Iprobe or MPI_Test)
in order to complete the 1st send operation correspond to the MPI standard and don't need a fix.

An old topic coming up again and again... To me, it's an indication of an ambiguity in the standard. Hubert is right with the interpretation of the part of the standard he has quoted, but there is another part that is of interest here, namely the progress rule (MPI 1.1, 3.7.4):
"
Progress A call to MPI_WAIT that completes a receive will eventually terminate and return if a matching send has been started, unless the send is satisfied by another receive. In particular, if the matching send is nonblocking, then the receive should complete even if no call is executed by the sender to complete the send. Similarly, a call to MPI_WAIT that completes a send will eventually return if a matching receive has been started, unless the receive is satisfied by another send, and even if no call is executed to complete the receive.
"


It's necessary to differentiate between (1)"message data completely placed in user-provided buffer" and (2)"data written into/taken of the network to avoid blocking". To assert (1), the condition quoted by Hubert needs to be fulfilled. To assert (2), the progress rule describes that *starting* the related send/recv operation is sufficient. And a nonblocking send/recv actually *does* start the operation once it's matched. Here, Marc is right.

IMHO, the standard needs clarification.

 Joachim

--
Joachim Worringen, Software Architect, Dolphin Interconnect Solutions
phone ++49/(0)228/324 08 17 - http://www.dolphinics.com