Definition
MPI_Recv_init prepares a request handle for reception using persistent communications. The handle request is inactive upon creation because no actual reception is issued until the request handle is passed to MPI_Start, at which point it becomes active. An MPI_Recv_init followed with an MPI_Start is equivalent to MPI_Irecv: the receive is issued, but completion must still be explicitly checked. Therefore, a wait such as MPI_Wait or a test such as MPI_Test is required before the buffers passed to MPI_Recv_init can be safely reused. Once the request handle of a persistent communication has been waited upon, or successfully tested, it becomes inactive and can be passed again to MPI_Start to issue that same reception again. This is how persistent communications save time; they decrease the overhead about argument processing since the list of arguments passed is already known. Using an MPI_Recv_init does not require the corresponding send on the sender MPI process to be done via persistent communications, and vice-versa. Other persistent communications are: MPI_Send_init, MPI_Ssend_init, MPI_Bsend_init and MPI_Rsend_init.
int MPI_Recv_init(void* buffer,
int count,
MPI_Datatype datatype,
int sender,
int tag,
MPI_Comm communicator,
MPI_Request* request);