Megosztás:


MPI_Comm_split függvény

A megadott kommunikátorhoz társított csoportot egy adott számú különálló alcsoportra particionálja.

Szintaxis

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

Paraméterek

  • Comm
    A felosztandó kommunikátor.

  • Szín
    Az új kommunikátor, amelyhez a hívási folyamatot hozzá kell rendelni. A szín értékének nem negatívnak kell lennie.

    Ha egy folyamat megadja a színértéket MPI_UNDEFINED, a függvény MPI_COMM_NULL a newcomm paraméterben visszaadja a hívási folyamatnak.

  • Kulcs
    A hívási folyamat relatív rangja az új kommunikátor csoportjában. A kulcs - és színparaméterek használatával kapcsolatos részletekért lásd: Megjegyzések.

  • newcomm [out]
    Visszatérés esetén egy leírót tartalmaz egy új kommunikátorhoz.

Visszatérési érték

Sikeres MPI_SUCCESS ad vissza. Ellenkező esetben a visszatérési érték hibakód.

A Fortranban a visszatérési érték az IERROR paraméterben lesz tárolva.

Fortran

    MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

Megjegyzések

Ez egy kollektív függvény, de minden folyamat különböző értékeket adhat meg a szín - és kulcsparaméterekhez .

Ez egy rendkívül hatékony mechanizmus arra, hogy egyetlen kommunikációs folyamatcsoportot tetszőleges számú alcsoportra osztsunk. Az alcsoportok számát az összes folyamathoz megadott színek száma határozza meg. Az eredményként kapott kommunikátorok nem fedik egymást. A kommunikátor ily módon történő felosztása hasznos a számítások hierarchiájának meghatározásához, például többrétű vagy lineáris algebra esetében.

Minden alcsoport tartalmazza az összes olyan folyamatot, amely ugyanazt az értéket adta meg a színparaméterhez. Az egyes alcsoportokon belül a folyamatok a kulcsparaméter értéke által meghatározott sorrendben vannak rangsorolva, a régi csoportban a rangjuknak megfelelően megtörve.

Az intrakommunikátor kommunikátor esetén a hívás MPI_COMM_CREATE(comm, group, new-comm) egyenértékű MPI_COMM_SPLIT(comm, color, key, newcomm)a hívással, ahol a csoporttagként működő folyamatok a csoport számát határozzák meg az összes különálló csoport egyedi számozása alapján a színparaméterhez és a kulcsparaméter csoportbeli rangjához. Minden olyan folyamat, amely nem tagja a csoportnak , MPI_UNDEFINED adja meg a színparamétert .

Egyetlen szín esetében a kulcsértéknek nem kell egyedinek lennie. A MPI_Comm_split függvény sorrendbe rendezi a folyamatokat a kulcsparaméter értéke szerint, és a kapcsolatokat a forráscsoport relatív rangsora alapján rendezi. Ha az összes kulcsparaméterhez ugyanaz az érték van megadva, akkor az adott színben lévő összes folyamat ugyanolyan relatív sorrendben van, mint a szülőcsoportban.

Az intrakommunikátorok esetében a MPI_Comm_split és MPI_Comm_create függvények hasonló képességet biztosítanak a kommunikációs csoportok különálló alcsoportokra való felosztására.

A MPI_Comm_split függvény akkor használatos, ha egyes folyamatok nem rendelkeznek a csoport többi tagjának teljes adataival, de minden folyamatnak az a színe van, amelyhez tartoznak. Ebben az esetben az MPI-implementáció kommunikációval felderíti a csoport többi tagját.

A MPI_Comm_create függvény akkor használatos, ha minden folyamat teljes körű információkkal rendelkezik a csoport tagjairól. Ebben az esetben az MPI-implementáció elkerülheti a csoporttagság felderítéséhez szükséges további kommunikációt.

A MPI_Comm_split által létrehozott kommunikátorok nem fedhetők át. A korlátozás leküzdéséhez többször is meghívhatja a MPI_Comm_split függvényt. Így több egymást átfedő kommunikációs struktúrát is létrehozhat. Az ilyen felosztási műveletekben a szín - és kulcsparaméterek kreatív használatát javasoljuk.

Az interkommunikátor MPI_Comm_split függvényének eredménye, hogy a bal oldalon lévő, a jobb oldali folyamatokkal megegyező színű folyamatok kombinálva létrehoznak egy új interkommunikátort. A kulcsparaméter határozza meg a folyamatok relatív rangsorát a kommunikáció mindkét oldalán. A MPI_COMM_NULL fogóponttal rendelkező új kommunikátort a rendszer visszaadja azoknak a folyamatoknak, amelyek színként MPI_UNDEFINED , vagy olyan színt ad meg, amely csak az interkommunikátor egyik oldalán van megadva.

Követelmények

Termék

HPC Pack 2012 MS-MPI terjeszthető csomag, HPC Pack 2008 R2 MS-MPI terjeszthető csomag, HPC Pack 2008 MS-MPI terjeszthető csomag vagy HPC Pack 2008 Client Utilities

Fejléc

Mpi.h; Mpif.h

Kódtár

Msmpi.lib

DLL

Msmpi.dll

Lásd még

MPI Communicator Functions

MPI_Comm_create