Megosztás:


MPI_Allgatherv függvény

Változó mennyiségű adatot gyűjt egy csoport minden tagjától, és elküldi az adatokat a csoport összes tagjának. A MPI_Allgatherv függvény olyan, mint a MPI_Gatherv, azzal a kivételrel, hogy az összes folyamat a gyökér helyett az eredményt kapja. A jth folyamatból küldött adatblokkot minden folyamat megkapja, és a puffer recvbufj. blokkjába helyezi. Ezeknek a blokkoknak nem kell azonos méretűnek lenniük.

Szintaxis

int MPIAPI MPI_Allgatherv(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
  _In_  int          *recvcounts,
  _In_  int          *displs,
        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, megadhat egy helyi beállítást úgy, hogy minden folyamat MPI_IN_PLACE ad meg. 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
    A folyamat által a sendbuf paraméterben megadott pufferben küldött adatelemek száma. Ha a sendcount egyik eleme nulla, az üzenetnek az adott folyamatból származó adatrésze üres.

  • sendtype
    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.

  • recvcounts [in]
    A fogadó pufferben lévő egyes kommunikátori folyamatok adatelemeinek száma.

  • displs [in]
    Az egyes kommunikációs folyamatok adatainak helye a recvbuf paraméterhez viszonyítva.

    A recvbuf, a recvcounts és a displs paramétertömbökben az egyes tömbök n. eleme az n. kommunikátori folyamattól kapott adatokra hivatkozik.

  • recvtype
    A puffer egyes 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_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

Megjegyzések

A MPI_Allgatherv használati szabályai megfelelnek a MPI_Gatherv szabályainak.

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_Allgatherv(...)eredménye olyan, mintha az összes folyamat a parancsra MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)root = 0 , ..., n-1irányuló hívásokat hajt végre.

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.

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_Gatherv

MPI_Datatype