Sdílet prostřednictvím


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

Viz také

Funkce komunikátoru MPI

MPI_Comm_split