Definition
MPI_Isend is the standard non-blocking send (the capital 'I' stands for immediate return). The word standard indicates that this routine is not explicitly told whether to send the message in a synchronous mode or asynchronous mode. Instead, MPI_Isend will make that decision itself; it will issue an asynchronous non-blocking send (MPI_Ibsend) if there is enough space in the buffer attached to MPI (MPI_Buffer_attach) to copy the buffer passed, issuing a synchronous non-blocking send (MPI_Issend) otherwise. Either way, as a non-blocking send, MPI_Isend will not block until the buffer passed is safe to be reused. In other words, the user must not attempt to reuse the buffer after MPI_Isend returns without explicitly checking for MPI_Isend completion (using MPI_Wait or MPI_Test). Other non-blocking sends are MPI_Ibsend, MPI_Issend, MPI_Irsend. Refer to its blocking counterpart, MPI_Send, to understand when the completion is reached.
int MPI_Isend(const void* buffer,
int count,
MPI_Datatype datatype,
int recipient,
int tag,
MPI_Comm communicator,
MPI_Request* request);