Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Extrait un sous-ensemble d’un groupe de processus dans le but de séparer le calcul MIMD (Multiple Instruction Multiple Data) dans un communicateur distinct.
Syntaxe
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Paramètres
comm
Communicateur source.groupe
Groupe qui définit le sous-ensemble demandé des processus dans le communicateur source.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_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Remarques
Le communicateur créé par cette fonction peut être subdivisé en sous-calculs parallèles à l’aide de la fonction MPI_Comm_create ou d’autres constructeurs de communicateur. La fonction MPI_Comm_split est une fonction plus générale permettant de créer des objets MPI_Comm .
Si le paramètre comm fait référence à un intracommunicateur, cette fonction retourne un nouveau communicateur avec un groupe de communication tel que défini par le paramètre de groupe . Aucune information mise en cache ne se propage du communicateur source au nouveau communicateur. Chaque processus doit appeler avec un paramètre de groupe qui est un sous-groupe du groupe associé au communicateur source. Une valeur possible est MPI_GROUP_EMPTY. Les processus peuvent spécifier différentes valeurs pour le paramètre de groupe . Si un processus appelle avec un groupe non vide, tous les processus de ce groupe doivent appeler la fonction avec les mêmes valeurs pour le paramètre de groupe , c’est-à-dire les mêmes membres dans le même ordre. Sinon, la fonction retourne une erreur. Ce résultat implique que l’ensemble des groupes spécifiés dans les processus doit être disjoint. Si le processus appelant est membre du groupe spécifié dans le paramètre group , le paramètre newcomm représente un communicateur avec le groupe spécifié comme groupe associé. Si un processus spécifie un groupe auquel il n’appartient pas, par exemple , MPI_GROUP_EMPTY, le paramètre newcomm retourne MPI_COMM_NULL.
L’interface prend en charge le mécanisme d’origine de MPI-1.1, qui nécessitait le même groupe dans tous les processus de comm. Il a été étendu dans MPI-2.2 pour permettre l’utilisation de sous-groupes disjoints afin de permettre aux implémentations d’éliminer les communications inutiles que la fonction MPI_Comm_split entraînerait lorsque l’utilisateur connaît déjà l’appartenance aux sous-groupes disjoints.
La fonction MPI_Comm_create est collective et doit être appelée par tous les processus du groupe du communicateur source. L’exigence que l’ensemble du groupe participe à l’appel provient des problèmes suivants :
- Il permet à l’implémentation de superposer la fonction MPI_Comm_create au-dessus des communications collectives régulières.
- Il offre une sécurité supplémentaire, en particulier dans le cas où des groupes qui se chevauchent partiellement sont utilisés pour créer de nouveaux communicateurs.
- Il permet aux implémentations d’éviter une partie de la communication liée à la création de contexte.
Si le paramètre comm fait référence à un intercommunicateur, le communicateur créé est également un intercommunicateur où le groupe local se compose uniquement des processus spécifiés dans le paramètre de groupe . Spécifiez uniquement les processus dans le groupe local de l’intercommunicateur d’entrée qui doivent faire partie du nouveau communicateur dans le paramètre de groupe . Tous les processus du même groupe local du communicateur doivent spécifier la même valeur pour le paramètre de groupe , c’est-à-dire les mêmes membres dans le même ordre. Si l’un des groupes ne spécifie pas au moins un processus dans le groupe local de l’intercommunicateur, ou si le processus appelant n’est pas inclus dans le groupe, une erreur est retournée.
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 |