Partager via


MPI_Iscatter, fonction

Diffuse les données d’un membre entre tous les membres d’un groupe de manière non bloquante. Cette fonction effectue l’inverse de l’opération effectuée par la fonction MPI_Igather.

Syntaxe

int MPIAPI MPI_Iscatter(
  _In_opt_  const void         *sendbuf,
  _In_             int         sendcount,
  _In_            MPI_Datatype sendtype,
  _Out_opt_       void         *recvbuf,
  _In_            int          recvcount,
  _In_            MPI_Datatype recvtype,
  _In_            int          root,
  _In_            MPI_Comm     comm,
  _Out_           MPI_Request  *request
);

Paramètres

  • sendbuf [in, facultatif]
    Pointeur vers une mémoire tampon qui contient les données à envoyer au processus racine.

    Ce paramètre 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 [in]
    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.

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

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

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

  • recvbuf [out, facultatif]
    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 [in]
    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 [in]
    Type de données MPI des éléments dans la mémoire tampon de réception.

  • root [in]
    Classement du processus de réception dans le communicateur spécifié.

  • comm [in]
    Handle de communicateur MPI_Comm.

  • request [out]
    Handle MPI_Request représentant l’opération de communication.

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

Remarques

Un appel non bloquant lance une opération de réduction collective qui doit être effectuée dans un appel d’achèvement distinct. Une fois lancée, l’opération peut progresser indépendamment de tout calcul ou autre communication au niveau des processus participants. De cette façon, les opérations de réduction non bloquantes peuvent atténuer les effets de synchronisation possibles des opérations de réduction en les exécutant en « arrière-plan ».

Tous les appels d’achèvement (par exemple, MPI_Wait) sont pris en charge pour les opérations de réduction non bloquantes.

Configuration requise

Produit

Microsoft MPI v7

En-tête

Mpi.h ; Mpif.h

Bibliothèque

Msmpi.lib

DLL

Msmpi.dll

Voir aussi

Fonctions collectives MPI

MPI_Datatype

MPI_Scatter

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome