
Click here for Flash animation
Maybe it should be called "ready or not" send! The sender:
- does not offer handshake, simply starts to send message
- requires that matching receive has already been posted
- generates an error otherwise, by default
The ready mode send MPI_Rsend (S) simply sends the message out over the network. It requires that the "ready to receive" notification has arrived, indicating that the receiving task has posted the receive. If the "ready to receive" message hasn't arrived, the ready mode send will incur an error. By default, the code will exit. The programmer can associate a different error handler with a communicator to override this default behavior. The diagram shows the latest posting of the MPI_Recv (S) that would not cause an error.
Minimizes system and synchronization overhead for the sender
Ready mode aims to minimize system overhead and synchronization overhead incurred by the sending task. In the blocking case, the only wait on the sending node is until all data have been transferred out of the sending task's message buffer. The receive can still incur substantial synchronization overhead, depending on how much earlier it is executed than the corresponding send.
Should not be used if receiver isn't guaranteed to be ready
This mode should not be used unless the user is certain that the corresponding receive has been posted.