MPI_Ibsend is the asynchronous non-blocking send (the capital 'I' stands for immediate return); it will make a copy of the buffer passed, and MPI will effectively send this copy to the recipient in future, but the user cannot know when. However, unlike its blocking counterpart MPI_Bsend, MPI_Ibsend will not block until that copy is made, instead it will return immediately. This implies that when MPI_Ibsend returns, the buffer provided may not have been copied yet so reusing this buffer is unsafe. The user must therefore check for completion with MPI_Wait or MPI_Test before safely reusing the buffer passed. Note that the size of the copy is equal to that of the buffer passed plus the memory overhead generated by an MPI_Ibsend, represented by MPI_BSEND_OVERHEAD, which contains for instance the rank of the recipient process. The MPI buffer in which the copy will be made must be allocated by the user and explicitly attached to MPI using MPI_Buffer_attach. If no buffer is attached, the MPI standard states that MPI_Ibsend behaves as if a zero-sized buffer was attached. MPI_Ibsend may be invoked implicitly by the standard non-blocking send (MPI_Isend). Other non-blocking sends are MPI_Isend, MPI_Issend and MPI_Irsend. Refer to MPI_Bsend to see the blocking counterpart of MPI_Ibsend.