MPI_Recv función
Realiza una operación de recepción y no devuelve hasta que se recibe un mensaje coincidente.
Sintaxis
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
Parámetros
buf [in, optional]
Puntero al búfer que contiene los datos que se van a enviar.count
Número de elementos que hay en el búfer. Si la parte de datos del mensaje está vacía, establezca el parámetro count en 0.datatype
Tipo de datos de los elementos de la matriz de búfer.source
Rango del proceso de envío dentro del comunicador especificado. Especifique la constante MPI_ANY_SOURCE para especificar que cualquier origen sea aceptable.tag
Etiqueta de mensaje que se usa para distinguir diferentes tipos de mensajes. Especifique la constante MPI_ANY_TAG para indicar que cualquier etiqueta es aceptable.comm
Identificador del comunicador.status [out]
Al devolver, contiene un puntero a una estructura de MPI_Status donde se almacena información sobre el mensaje recibido.
Valor devuelto
Devuelve MPI_SUCCESS si se realiza correctamente. De lo contrario, el valor devuelto es un código de error.
En Fortran, el valor devuelto se almacena en el parámetro IERROR .
Fortran
MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
Comentarios
La longitud del mensaje recibido debe ser menor o igual que la longitud del búfer de recepción. Esta función devuelve un error de desbordamiento si todos los datos entrantes no caben en el búfer de recepción.
Si el mensaje recibido es más corto que el búfer, solo se modifica la parte del búfer que corresponde al mensaje. El resto del búfer no se modifica.
Los procesos pueden enviar mensajes a sí mismos. Sin embargo, no es seguro hacerlo con las operaciones de envío y recepción de bloqueo, MPI_Send y MPI_Recv, ya que estas operaciones de envío y recepción de bloqueo pueden provocar un interbloqueo.
Nota
Hay una asimetría entre las operaciones de envío y recepción. Una operación de recepción puede aceptar mensajes de un remitente arbitrario, pero una operación de envío debe especificar un receptor único. Esto implementa un estilo de inserción de comunicación, donde el remitente aplica la transferencia de datos, en lugar de un estilo de extracción en el que el receptor aplica la transferencia de datos.
Requisitos
Producto |
Paquete redistribuible DE HPC Pack 2012 MS-MPI, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package o HPC Pack 2008 Client Utilities |
Encabezado |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
Archivo DLL |
Msmpi.dll |