Point-to-point communication calls involve sends and receives between two processes. There are two basic categories of sends and receives, which are either blocking or non-blocking. A blocking call is one that returns when the send (or receive) is complete. A non-blocking call returns immediately and it is up to the programmer to check for the completion of the call.
There are also four different types of communication modes which
correspond to four versions of send: standard MPI_SEND,
buffered MPI_BSEND, synchronous MPI_SSEND, and ready
MPI_RSEND. Other very useful calls include the non-blocking
standard send MPI_ISEND, the non-blocking receive
MPI_IRECV, and their tests for completion MPI_TEST, and
MPI_WAIT.
Please examine the detailed documentation for the specifics of the
other calls, as only the non-blocking standard send MPI_SEND and
receive MPI_RECV will be presented here. Following are the C
and Fortran implementations of MPI_SEND and MPI_RECV, with
associated parameters and syntax.