Partager via


MPI_Recv, fonction

Effectue une opération de réception et ne retourne pas tant qu’un message correspondant n’est pas reçu.

Syntaxe

int MPIAPI MPI_Recv(
  _In_opt_ void         *buf,
           int          count,
           MPI_Datatype datatype,
           int          source,
           int          tag,
           MPI_Comm     comm,
  _Out_    MPI_Status   *status
);

Paramètres

  • buf [in, facultatif]
    Pointeur vers la mémoire tampon qui contient les données à envoyer.

  • count
    Nombre d'éléments contenus dans la mémoire tampon. Si la partie données du message est vide, définissez le paramètre count sur 0.

  • datatype
    Type de données des éléments dans le tableau de mémoires tampons.

  • source
    Classement du processus d’envoi dans le communicateur spécifié. Spécifiez la constante MPI_ANY_SOURCE pour spécifier qu’une source est acceptable.

  • tag
    Balise de message utilisée pour distinguer différents types de messages. Spécifiez la constante MPI_ANY_TAG pour indiquer qu’une balise est acceptable.

  • comm
    Handle du communicateur.

  • status [out]
    Au retour, contient un pointeur vers une structure MPI_Status où sont stockées les informations sur le message reçu.

Valeur retournée

Retourne MPI_SUCCESS en cas de réussite. Sinon, la valeur de retour est un code d’erreur.

Dans Fortran, la valeur de retour est stockée dans le paramètre 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

Remarques

La longueur du message reçu doit être inférieure ou égale à la longueur de la mémoire tampon de réception. Cette fonction retourne une erreur de dépassement de capacité si toutes les données entrantes ne tiennent pas dans la mémoire tampon de réception.

Si le message reçu est plus court que la mémoire tampon, seule la partie de la mémoire tampon qui correspond au message est modifiée. Le reste de la mémoire tampon n’est pas modifié.

Les processus peuvent s’envoyer des messages. Toutefois, il n’est pas possible de le faire avec les opérations d’envoi et de réception bloquantes, MPI_Send et MPI_Recv, car ces opérations d’envoi et de réception bloquantes peuvent entraîner un blocage.

Notes

Il existe une asymétrie entre les opérations d’envoi et de réception. Une opération de réception peut accepter des messages provenant d’un expéditeur arbitraire, mais une opération d’envoi doit spécifier un récepteur unique. Cela implémente un style push de communication, où le transfert de données est effectué par l’expéditeur, plutôt qu’un style d’extraction où le transfert de données est effectué par le récepteur.

 

Configuration requise

Produit

Package redistribuable MS-MPI HPC Pack 2012, package redistribuable HPC Pack 2008 R2 MS-MPI, package redistribuable MS-MPI HPC Pack 2008 ou utilitaires clients HPC Pack 2008

En-tête

Mpi.h ; Mpif.h

Bibliothèque

Msmpi.lib

DLL

Msmpi.dll

Voir aussi

Fonctions point à point MPI

MPI_Send

MPI_Irecv

MPI_Datatype

MPI_Comm

MPI_Status