Compartir a través de


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

Consulte también

Funciones de punto a punto de MPI

MPI_Send

MPI_Irecv

MPI_Datatype

MPI_Comm

MPI_Status