Partager via


MPI_Comm_split fonction

Partitionne le groupe associé au communicateur spécifié dans un nombre spécifié de sous-groupes disjoints.

Syntaxe

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

Paramètres

  • comm
    Communicateur à fractionner.

  • color
    Nouveau communicateur auquel le processus appelant doit être affecté. La valeur de couleur doit être non négative.

    Si un processus spécifie la valeur de couleurMPI_UNDEFINED, la fonction retourne MPI_COMM_NULL dans le paramètre newcomm au processus appelant.

  • key
    Classement relatif du processus appelant dans le groupe du nouveau communicateur. Pour plus d’informations sur l’utilisation des paramètres de clé et de couleur , consultez Remarques.

  • newcomm [out]
    Au retour, contient un handle pour un nouveau communicateur.

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_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

Remarques

Il s’agit d’une fonction collective, mais chaque processus peut spécifier des valeurs différentes pour les paramètres de couleur et de clé .

Il s’agit d’un mécanisme extrêmement puissant pour diviser un groupe de processus de communication unique en un nombre arbitraire de sous-groupes. Le nombre de sous-groupes est déterminé par le nombre de couleurs spécifiées sur tous les processus. Les communicateurs résultants ne se chevauchent pas. La sous-division d’un communicateur de cette façon est utile pour définir une hiérarchie de calculs, par exemple pour le multiréseau ou l’algèbre linéaire.

Chaque sous-groupe contient tous les processus qui ont spécifié la même valeur pour le paramètre de couleur . Dans chaque sous-groupe, les processus sont classés dans l’ordre défini par la valeur du paramètre key , avec des liens rompus en fonction de leur rang dans l’ancien groupe.

Avec un communicateur intracommunicateur, un appel à MPI_COMM_CREATE(comm, group, new-comm) équivaut à un appel à MPI_COMM_SPLIT(comm, color, key, newcomm), où les processus qui sont membres du groupe spécifient le numéro du groupe, en fonction d’une numérotation unique de tous les groupes disjoints, pour le paramètre de couleur et leur rang dans le groupe pour le paramètre key . Tous les processus qui ne sont pas membres du groupe spécifient MPI_UNDEFINED pour le paramètre de couleur .

Pour une couleur quelconque, les valeurs de clé ne doivent pas être uniques. La fonction MPI_Comm_split trie les processus dans l’ordre en fonction de la valeur du paramètre de clé , et trie les liens en fonction de leur rang relatif dans le groupe source. Si la même valeur est spécifiée pour tous les paramètres de clé , tous les processus dans une couleur donnée ont le même ordre de classement relatif que dans leur groupe parent.

Pour les intracommunicateurs, les fonctions MPI_Comm_split et MPI_Comm_create offrent une capacité similaire pour fractionner un groupe de communication en sous-groupes disjoints.

La fonction MPI_Comm_split est utilisée lorsque certains processus n’ont pas d’informations complètes sur les autres membres de leur groupe, mais que tous les processus ont la couleur du groupe auquel ils appartiennent. Dans ce cas, l’implémentation MPI découvre les autres membres du groupe via la communication.

La fonction MPI_Comm_create est utilisée lorsque tous les processus ont des informations complètes sur les membres de leur groupe. Dans ce cas, l’implémentation MPI peut éviter les communications supplémentaires requises pour découvrir l’appartenance au groupe.

Les communicateurs créés par MPI_Comm_split ne peuvent pas se chevaucher. Vous pouvez appeler la fonction MPI_Comm_split plusieurs fois pour surmonter cette limitation. Vous pouvez créer plusieurs structures de communication qui se chevauchent de cette façon. L’utilisation créative des paramètres de couleur et de clé dans ces opérations de fractionnement est encouragée.

Le résultat de la fonction MPI_Comm_split sur un intercommunicateur est que les processus de gauche avec la même couleur que ceux de droite se combinent pour créer un nouvel intercommunicateur. Le paramètre key définit le rang relatif des processus de chaque côté de l’intercommunicateur. Un nouveau communicateur avec un handle de MPI_COMM_NULL est retourné aux processus qui spécifient MPI_UNDEFINED comme couleur, ou spécifient une couleur qui n’est spécifiée que sur un côté de l’intercommunicateur.

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

MPI_Comm_create