Partager via


MPI_Allgatherv fonction

Collecte une quantité variable de données de chaque membre d’un groupe et envoie les données à tous les membres du groupe. La fonction MPI_Allgatherv est semblable à la MPI_Gatherv, sauf que tous les processus reçoivent le résultat, au lieu de la racine uniquement. Le bloc de données envoyé à partir du jième processus est reçu par chaque processus et placé dans le jième bloc du recvbuf de la mémoire tampon. Ces blocs ne doivent pas tous avoir la même taille.

Syntaxe

int MPIAPI MPI_Allgatherv(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
  _In_  int          *recvcounts,
  _In_  int          *displs,
        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
    Nombre d’éléments de données que ce processus envoie dans la mémoire tampon spécifiée dans le paramètre sendbuf . Si un élément dans sendcount est égal à zéro, la partie données du message de ce processus est vide.

  • sendtype
    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 .

  • recvcounts [in]
    Nombre d’éléments de données de chaque processus de communication dans la mémoire tampon de réception.

  • displs [in]
    Emplacement, par rapport au paramètre recvbuf , des données de chaque processus de communication.

    Dans les tableaux de paramètres recvbuf, recvcounts et displs , le nièmeélément de chaque tableau fait référence aux données reçues du nième processus de communication.

  • recvtype
    Type de données MPI de chaque élément dans la mémoire tampon.

  • 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_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

Remarques

Les règles d’utilisation pour MPI_Allgatherv correspondent aux règles de MPI_Gatherv.

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_Allgatherv(...)est comme si tous les processus exécutaient des appels à MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,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.

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_Gatherv

MPI_Datatype