MPI_Comm_create funkce
Extrahuje podmnožinu skupin procesů pro účely samostatného výpočtu MIMD (Multiple Instruction Multiple Data) v samostatném komunikátoru.
Syntaxe
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parametry
Komunikace
Zdrojový komunikátor.skupina
Skupina, která definuje požadovanou podmnožinu procesů ve zdrojovém komunikátoru.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.
Ve Fortranu je vrácená hodnota uložena v parametru IERROR .
Fortran
MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Poznámky
Komunikátor, který tato funkce vytvoří, lze dále rozdělit na paralelní podkomputace pomocí funkce MPI_Comm_create nebo jiných konstruktorů komunikátoru. Funkce MPI_Comm_split je obecnější funkcí pro vytváření MPI_Comm objektů.
Pokud parametr komunikace odkazuje na intracommunicator, vrátí tato funkce nový komunikátor s komunikační skupinou definovanou parametrem skupiny . Žádné informace uložené v mezipaměti se šíří ze zdrojového komunikátoru do nového komunikátoru. Každý proces musí volat s parametrem skupiny , který je podskupinou skupiny, která je přidružena ke zdrojovému komunikátoru. Možná hodnota je MPI_GROUP_EMPTY. Procesy mohou zadat různé hodnoty parametru skupiny . Pokud proces volá s neprázdnou skupinou, musí všechny procesy v této skupině volat funkci se stejnými hodnotami parametru skupiny , tj. se stejnými členy ve stejném pořadí. V opačném případě funkce vrátí chybu. Tento výsledek znamená, že sada skupin, které jsou zadány v rámci procesů, musí být nesouvislé. Pokud je volající proces členem skupiny, která je zadána v parametru group , pak newcomm parametr představuje komunikátor se zadanou skupinou jako přidruženou skupinou. Pokud proces určuje skupinu, do které nepatří, například MPI_GROUP_EMPTY, vrátí parametr newcommMPI_COMM_NULL.
Rozhraní podporuje původní mechanismus z MPI-1.1, který vyžadoval stejnou skupinu ve všech procesech comm. Byla rozšířena v mpi-2.2, aby bylo možné používat oddělené podskupiny, aby bylo možné implementace eliminovat zbytečnou komunikaci, ke které by MPI_Comm_split funkce došlo, když uživatel již zná členství v oddělených podskupinách.
Funkce MPI_Comm_create je kolektivní a musí být volána všemi procesy ve skupině zdrojového komunikátoru. Požadavek, aby se hovoru zúčastnila celá skupina, vyplývá z následujících problémů:
- Umožňuje implementaci vrstvit funkci MPI_Comm_create nad běžnou hromadnou komunikaci.
- Poskytuje další bezpečnost, zejména v případě, kdy se k vytváření nových komunikátorů používají částečně překrývající se skupiny.
- Umožňuje implementaci vyhnout se některé komunikaci, která souvisí s vytvářením kontextu.
Pokud comm parametr odkazuje na interkomunikator, pak vytvořený komunikátor je také interkomunikator, kde místní skupina se skládá pouze z těch procesů, které jsou zadány v parametru skupiny . V parametru skupiny zadejte pouze ty procesy v místní skupině vstupního interkomunikatoru, které mají být součástí nového komunikátoru. Všechny procesy ve stejné místní skupině komunikátoru musí zadat stejnou hodnotu parametru skupiny , tj. stejné členy ve stejném pořadí. Pokud některá ze skupin nezadá alespoň jeden proces v místní skupině interkomunikatoru nebo pokud volající proces není zahrnut do skupiny, vrátí se chyba.
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; Soubor Mpif.h |
Knihovna |
Msmpi.lib |
DLL |
Msmpi.dll |