Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozdělí skupinu přidruženou k zadanému komunikátoru na zadaný počet oddělených podskupin.
Syntaxe
int MPIAPI MPI_Comm_split(
MPI_Comm comm,
int color,
int key,
_Out_ MPI_Comm *newcomm
);
Parametry
Komunikace
Komunikátor, který se má rozdělit.Barev
Nový komunikátor, ke kterému má být přiřazen volající proces. Hodnota barvy musí být nezáporná.Pokud proces určuje hodnotu barvyMPI_UNDEFINED, vrátí funkce MPI_COMM_NULL v parametru newcomm do procesu volání.
Klíč
Relativní pořadí procesu volání ve skupině nového komunikátoru. Podrobnosti o použití parametrů klíče a barvy najdete v tématu Poznámky.newcomm [out]
Při vrácení obsahuje popisovač nového komunikátoru.
Vrácená hodnota
Vrátí MPI_SUCCESS při úspěchu. V opačném případě je návratovou hodnotou kód chyby.
V nástroji Fortran je vrácená hodnota uložena v parametru IERROR .
Fortran
MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
Poznámky
Jedná se o kolektivní funkci, ale každý proces může zadat různé hodnoty pro parametry barvy a klíče .
Jedná se o velmi účinný mechanismus rozdělení jedné komunikující skupiny procesů do libovolného počtu podskupin. Počet podskupin je určen počtem barev, které jsou zadány pro všechny procesy. Výsledné komunikátory se nepřekrývají. Rozdělení komunikátoru tímto způsobem je užitečné pro definování hierarchie výpočtů, například pro vícesříťovou nebo lineární algebru.
Každá podskupina obsahuje všechny procesy, které zadaly stejnou hodnotu pro parametr color . V rámci každé podskupiny jsou procesy seřazeny v pořadí, které je definováno hodnotou klíčového parametru, přičemž vazby jsou rozděleny podle jejich pořadí ve staré skupině.
U komunikátoru intrakomunikatoru je volání MPI_COMM_CREATE(comm, group, new-comm)
ekvivalentem volání MPI_COMM_SPLIT(comm, color, key, newcomm)
, kde procesy, které jsou členy skupiny, určují číslo skupiny na základě jedinečného číslování všech oddělených skupin pro parametr barvy a jejich pořadí ve skupině klíčového parametru. Všechny procesy, které nejsou členy skupiny, určují MPI_UNDEFINED parametru color .
Pro libovolnou barvu nemusí být klíčové hodnoty jedinečné. Funkce MPI_Comm_split seřadí procesy podle hodnoty klíčového parametru a seřadí vazby podle jejich relativního pořadí ve zdrojové skupině. Pokud je pro všechny klíčové parametry zadána stejná hodnota, mají všechny procesy v dané barvě stejné relativní pořadí pořadí, které měly v nadřazené skupině.
Funkce MPI_Comm_split a MPI_Comm_create pro intrakomunikátory poskytují podobnou schopnost rozdělit komunikující skupinu do oddělených podskupin.
Funkce MPI_Comm_split se používá, když některé procesy nemají úplné informace o ostatních členech ve své skupině, ale všechny procesy mají barvu skupiny, do které patří. V tomto případě implementace MPI zjistí ostatní členy skupiny prostřednictvím komunikace.
Funkce MPI_Comm_create se používá, když všechny procesy mají úplné informace o členech své skupiny. V tomto případě se implementace MPI může vyhnout dodatečné komunikaci, která je nutná ke zjištění členství ve skupině.
Komunikátory vytvořené MPI_Comm_split se nemohou překrývat. Abyste toto omezení překonali, můžete funkci MPI_Comm_split volat několikrát. Tímto způsobem můžete vytvořit více překrývajících se komunikačních struktur. V takových operacích dělení se doporučuje kreativní použití barev a klíčových parametrů.
Výsledkem MPI_Comm_split funkce na interkomunikátoru je, že tyto procesy nalevo se stejnou barvou jako procesy vpravo zkombinují a vytvoří nový interkomunikátor. Klíčový parametr definuje relativní pořadí procesů na každé straně interkomunikatoru. Nový komunikátor s popisovačem MPI_COMM_NULL je vrácen procesům, které jako barvu určují MPI_UNDEFINED nebo určují barvu, která je určena pouze na jedné straně interkomunikatoru.
Požadavky
Produkt |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package nebo HPC Pack 2008 Client Utilities |
Hlavička |
Mpi.h; Mpif.h |
Knihovna |
Msmpi.lib |
DLL |
Msmpi.dll |