MPI_Recv function
Performs a receive operation and does not return until a matching message is received.
Syntax
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
Parameters
buf [in, optional]
A pointer to the buffer that contains the data to be sent.count
The number of elements in the buffer. If the data part of the message is empty, set the count parameter to 0.datatype
The data type of the elements in the buffer array.source
The rank of the sending process within the specified communicator. Specify the MPI_ANY_SOURCE constant to specify that any source is acceptable.tag
The message tag that is used to distinguish different types of messages. Specify the MPI_ANY_TAG constant to indicate that any tag is acceptable.comm
The handle to the communicator.status [out]
On return, contains a pointer to an MPI_Status structure where information about the received message is stored.
Return value
Returns MPI_SUCCESS on success. Otherwise, the return value is an error code.
In Fortran, the return value is stored in the IERROR parameter.
Fortran
MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
Remarks
The length of the received message must be less than or equal to the length of the receive buffer. This function returns an overflow error if all incoming data does not fit into the receive buffer.
If the received message is shorter than the buffer, only the part of the buffer that corresponds to the message is modified. The remainder of the buffer is not modified.
Processes can send messages to themselves. However, it is unsafe to do so with the blocking send and receive operations, MPI_Send and MPI_Recv, because these blocking send and receive operations can cause a deadlock.
Note
There is an asymmetry between send and receive operations. A receive operation can accept messages from an arbitrary sender, but a send operation must specify a unique receiver. This implements a push style of communication, where data transfer is effected by the sender, rather than a pull style where data transfer is effected by the receiver.
Requirements
Product |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package or HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Library |
Msmpi.lib |
DLL |
Msmpi.dll |