Partager via


MPI_Scatter, fonction

Diffuse les données d’un membre entre tous les membres d’un groupe. La fonction MPI_Scatter effectue l’inverse de l’opération effectuée par la fonction MPI_Gather .

Syntaxe

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

Paramètres

  • sendbuf [in]
    Handle vers une mémoire tampon qui contient les données à envoyer par le processus racine.

    Le paramètre sendbuf est ignoré pour tous les processus non racines.

    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 le processus racine. Les paramètres recvcount et recvtype sont ignorés. Le vecteur dispersé est toujours considéré comme contenant n segments, où n est la taille du groupe ; le segment qui correspond au processus racine n’est pas déplacé.

  • sendcount
    Nombre d’éléments dans la mémoire tampon d’envoi. Si sendcount est égal à zéro, la partie données du message est vide.

    Le paramètre sendcount est ignoré pour tous les processus non racines.

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

    Le paramètre sendcount est ignoré pour tous les processus non racines.

  • recvbuf [out]
    Handle d’une mémoire tampon qui contient les données reçues sur chaque processus. Le nombre et le type de données des éléments dans 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 des éléments dans la mémoire tampon de réception.

  • root
    Classement du processus d’envoi dans le communicateur spécifié.

  • comm
    Handle de communicateur 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_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR

Remarques

L’effet de la fonction MPI_Scatter est comme si le processus racine envoyait un message à l’aide de la fonction MPI_Send . Ce message est divisé en n segments égaux, un pour chaque membre du groupe. Le ièmesegment est envoyé au iième processus dans le groupe.

Si comm est un intracommunicateur, le résultat est comme si la racine exécutait n opérations MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)d’envoi ; et chaque processus exécutait une réception, MPI_Recv(recvbuf, recvcount, recvtype, i,…).

La signature de type spécifiée par les paramètres sendcount et sendtype pour le processus racine doit être égale à la signature de type spécifiée par les paramètres recvcount et recvtype pour tous les processus. Par conséquent, la quantité de données envoyées doit être égale à la quantité de données reçues entre n’importe quelle paire de processus. Les mappages de types distincts entre l’expéditeur et le destinataire sont toujours autorisés.

Tous les paramètres de fonction sont significatifs sur le processus racine, seuls les paramètres recvbuf, recvcount, recvtype, root et comm sont significatifs sur les autres processus. Les paramètres racine et comm doivent être identiques sur tous les processus.

La spécification des nombres et des types ne doit pas entraîner la lecture d’un emplacement sur la racine plusieurs fois.

Si le paramètre comm fait référence à un intercommunicateur, l’appel implique tous les processus de l’intercommunicateur, mais avec un groupe, le groupe A, qui définit le processus racine. Tous les processus de l’autre groupe, le groupe B, définissent la même valeur dans le paramètre racine , c’est-à-dire le rang du processus racine dans le groupe A. Le processus racine définit la valeur MPI_ROOT dans le paramètre racine . Tous les autres processus du groupe A définissent la valeur MPI_PROC_NULL dans le paramètre racine . Les données sont diffusées à partir du processus racine vers tous les processus du groupe B. Les paramètres de mémoire tampon des processus du groupe B doivent être cohérents avec le paramètre de mémoire tampon du processus racine.

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 collectives MPI

MPI_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatterv