I got confused when reading about blocking send and receives in MPI. As stated in the MPI Standard 2.2, section 3.4 Communication Modes:
... The receive operation described in the last section is blocking: it returns only after the receive buffer contains the newly received message. A receive can complete before the matching send has completed (of course, it can complete only after the matching send has started).
Can somebody explain to me how a blocking receive can complete before the corresponding send has completed? My understanding is that a blocking receive (MPI_recv
) returns when data is ready to be used in the receive buffer (i.e. the data has been received fully). Is this not the case?