Definition
MPI_Send is the standard send in MPI. Behind the scenes, it will issue a buffered send MPI_Bsend or a synchronous send MPI_Ssend. This decision will be based on whether the buffer attached for buffered sends contains enough free space for the message to send. If there is enough space, the buffered send MPI_Bsend will be issued, otherwise it will revert to a synchronous send MPI_Ssend. MPI implementations may provide a buffer by default, therefore not having explicitly assigned a buffer for buffered send does not guarantee that an MPI_Send will issue an MPI_Ssend. Tip: this specificity of MPI_Send to implicitly issue a buffered send or a synchronous send can result in deadlocks that are challenging to find out for beginners. In this case, explicitly issuing synchronous sends MPI_Ssend instead of standard sends MPI_Send may greatly help verify code correctness.
Other variants of MPI_Send are MPI_Ssend, MPI_Bsend and MPI_Rsend. See MPI_Isend for the non-blocking counterpart of MPI_Send.
int MPI_Send(const void* buffer,
int count,
MPI_Datatype datatype,
int recipient,
int tag,
MPI_Comm communicator);