Megosztás:


MPI_Allgather függvény

Adatokat gyűjt egy csoport összes tagjától, és elküldi az adatokat a csoport összes tagjának. A MPI_Allgather függvény hasonló a MPI_Gather függvényhez, azzal a kivételrel, hogy az adatokat nem csak a gyökérnek, hanem az összes folyamatnak elküldi. A MPI_Allgather használati szabályai megfelelnek a MPI_Gather szabályainak.

Szintaxis

int MPIAPI MPI_Allgather(
  _In_  void         *sendbuf,
  _In_  int          sendcount,
  _In_  MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

Paraméterek

  • sendbuf [in]
    A csoport összes folyamatának elküldendő adatokra mutató mutató. A puffer elemeinek száma és adattípusa a sendcount és a sendtype paraméterekben van megadva. A puffer minden eleme megfelel a csoport egy folyamatának.

    Ha a comm paraméter egy intrakommunikátorra hivatkozik, a MPI_IN_PLACE megadásával minden folyamathoz megadhat egy helyi beállítást. A sendcount és a sendtype paraméterek figyelmen kívül lesznek hagyva. Minden folyamat adatokat ad meg a megfelelő fogadópufferelemben. Az n. folyamat adatokat küld a fogadópuffer n.a. elemének.

  • sendcount [in]
    A sendbuf paraméterben megadott elemek száma a pufferben. Ha a sendcount értéke nulla, az üzenet adatrésze üres.

  • sendtype [in]
    A küldési puffer elemeinek MPI-adattípusa.

  • recvbuf [kifelé]
    Az egérmutató egy olyan pufferre, amely az egyes folyamatoktól kapott adatokat tartalmazza. A puffer elemeinek számát és adattípusát a recvcount és a recvtype paraméterek határozzák meg.

  • recvcount
    A fogadó puffer elemeinek száma. Ha a szám nulla, az üzenet adatrésze üres.

  • recvtype
    A fogadási puffer elemeinek MPI-adattípusa.

  • Comm
    A MPI_Comm kommunikátor fogantyú.

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 van tárolva.

Fortran

    MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Megjegyzések

A folyamat sendtype paraméteréhez társított típusa aláírásnak meg kell egyeznie a bármely más folyamat recvtype paraméteréhez társított típusaa aláírással.

Ha a comm paraméter egy intrakommunikátorra hivatkozik, a hívás MPI_ALLGATHER(...) eredménye olyan, mintha az összes folyamat n hívást hajtott volna végre a MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm) számára root = 0 , ..., n-1.

Ha a comm paraméter egy interkommunikátorra hivatkozik, akkor egy csoport minden egyes folyamata( például az A csoport) hozzájárul a sendcount paraméterben megadott adatelemek számához. Ezeket az adatokat összefűzi a rendszer, és az eredményt a másik csoport (B) minden egyes folyamata tárolja. Ezzel szemben a B csoportban lévő folyamatok adatainak összefűzését az A csoport minden egyes folyamata tárolja. Az A csoport küldési pufferparamétereinek konzisztensnek kell lenniük a B csoport fogadó pufferparamétereivel, és fordítva.

Az A csoportban lévő folyamatok által küldött elemek számának nem kell megegyeznie a B csoportban lévő folyamatok által küldött elemek számával. Az adatokat például csak egy irányba helyezheti át, ha fordított irányban adja meg a sendcount == 0 értéket a kommunikációhoz.

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 újraterjeszthető csomag vagy HPC Pack 2008 ügyfél-segédprogramok

Fejléc

Mpi.h; Mpif.h

Kódtár

Msmpi.lib

DLL

Msmpi.dll

Lásd még

MPI kollektív függvények

MPI_Datatype

MPI_Allgather