Partager via


MPI_Allgather fonction

Collecte les données de tous les membres d’un groupe et envoie les données à tous les membres du groupe. La fonction MPI_Allgather est similaire à la fonction MPI_Gather , sauf qu’elle envoie les données à tous les processus plutôt qu’à la racine uniquement. Les règles d’utilisation de MPI_Allgather correspondent aux règles de MPI_Gather.

Syntaxe

int MPIAPI MPI_Allgather(
  _In_  void         *sendbuf,
  _In_  int          sendcount,
  _In_  MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

Paramètres

  • sendbuf [in]
    Pointeur vers les données à envoyer à tous les processus du groupe. Le nombre et le type de données des éléments de la mémoire tampon sont spécifiés dans les paramètres sendcount et sendtype . Chaque élément de la mémoire tampon correspond à un processus dans le groupe.

    Si le paramètre comm fait référence à un intracommunicateur, vous pouvez spécifier une option sur place en spécifiant MPI_IN_PLACE dans tous les processus. Les paramètres sendcount et sendtype sont ignorés. Chaque processus entre des données dans l’élément de mémoire tampon de réception correspondant. Le nième processus envoie des données au nièmeélément de la mémoire tampon de réception.

  • sendcount [in]
    Nombre d’éléments dans la mémoire tampon spécifié dans le paramètre sendbuf . Si sendcount est égal à zéro, la partie données du message est vide.

  • sendtype [in]
    Type de données MPI des éléments dans la mémoire tampon d’envoi.

  • recvbuf [out]
    Pointeur vers une mémoire tampon qui contient les données reçues de chaque processus. Le nombre et le type de données des éléments de la mémoire tampon sont spécifiés dans les paramètres recvcount et recvtype .

  • recvcount
    Nombre d’éléments dans la mémoire tampon de réception. Si le nombre est égal à zéro, la partie données du message est vide.

  • recvtype
    Type de données MPI des éléments dans la mémoire tampon de réception.

  • comm
    Handle de communication MPI_Comm .

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_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Remarques

La signature de type associée au paramètre sendtype sur un processus doit être égale à la signature de type associée au paramètre recvtype sur tout autre processus.

Si le paramètre comm fait référence à un intracommunicateur, le résultat d’un appel à MPI_ALLGATHER(...) est comme si tous les processus exécutés n appelaient à MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm) pour root = 0 , ..., n-1.

Si le paramètre comm fait référence à un intercommunicateur, chaque processus d’un groupe, par exemple le groupe A, contribue au nombre d’éléments de données spécifiés dans le paramètre sendcount . Ces données sont concaténées et le résultat est stocké à chaque processus de l’autre groupe, groupe B. À l’inverse, la concaténation des données des processus du groupe B est stockée à chaque processus du groupe A. Les paramètres de mémoire tampon d’envoi dans le groupe A doivent être cohérents avec les paramètres de mémoire tampon de réception dans le groupe B, et vice versa.

Le nombre d’éléments, qui sont envoyés par les processus du groupe A, n’a pas à être égal au nombre d’éléments envoyés par les processus du groupe B. En particulier, vous pouvez déplacer des données dans une seule direction en spécifiant sendcount == 0 pour la communication dans le sens inverse.

Configuration requise

Produit

HpC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package ou HPC Pack 2008 Client Utilities

En-tête

Mpi.h ; Mpif.h

Bibliothèque

Msmpi.lib

DLL

Msmpi.dll

Voir aussi

Fonctions collectives MPI

MPI_Datatype

MPI_Allgather