Megosztás:


MPI_Scatterv függvény

Egy tag adatait pontba rendezi a csoport összes tagja között. A MPI_Scatterv függvény a MPI_Gatherv függvény által végrehajtott művelet inverzét hajtja végre.

Szintaxis

int MPIAPI MPI_Scatterv(
  _In_  void         *sendbuf,
  _In_  int          *sendcounts,
  _In_  int          *displs,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        int          root,
        MPI_Comm     comm
);

Paraméterek

  • sendbuf [in]
    Az egérmutató egy pufferre, amely a gyökérfolyamat által elküldendő adatokat tartalmazza.

    A sendbuf paraméter figyelmen kívül lesz hagyva minden nem gyökérfolyamat esetében.

    Ha a comm paraméter egy intrakommunikátorra hivatkozik, a gyökérfolyamatban MPI_IN_PLACE megadásával megadhat egy helyi beállítást. A rendszer figyelmen kívül hagyja a recvcount és a recvtype paramétereket. A pontozott vektor továbbra is n szegmenst tartalmaz, ahol n a csoport mérete; a gyökérfolyamatnak megfelelő szegmens nem lesz áthelyezve.

  • sendcounts [in]
    Az egyes folyamatoknak küldendő elemek száma. Ha a sendcount[i] értéke nulla, a folyamat üzenetének adatrésze üres.

    A sendcount paraméter figyelmen kívül lesz hagyva minden nem gyökérfolyamat esetében.

  • displs [in]
    Az egyes kommunikációs folyamatoknak küldendő adatok helye. A tömb minden helye a sendbuf tömb megfelelő eleméhez viszonyítva található.

    A sendbuf, a sendcounts és a displs paramétertömbökben az egyes tömbök n. eleme az n. kommunikátori folyamatnak küldendő adatokra hivatkozik.

    Ez a paraméter csak a gyökérfolyamatban jelentős.

  • sendtype
    A puffer egyes elemeinek MPI-adattípusa.

    A sendcount paraméter figyelmen kívül lesz hagyva minden nem gyökérfolyamat esetében.

  • recvbuf [kifelé]
    Az egérmutató egy olyan pufferre, amely az egyes folyamatokon fogadott 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 adattípusa.

  • Gyökér
    A küldési folyamat rangja a megadott kommunikátoron belül.

  • 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_SCATTERV(SENDBUF, SENDCOUNT, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, DISPLS(*), RECVCOUNT(*), RECVTYPE, ROOT, COMM, IERROR

Megjegyzések

A MPI_Scatterv függvény kibővíti a MPI_Scatter függvény funkcióit azáltal, hogy lehetővé teszi, hogy a sendcounts tömbben megadott változó számú adat legyen elküldve az egyes folyamatoknak.

A darabszámok, típusok és elmozdulások specifikációja nem okozhatja, hogy a gyökéren lévő helyek többször is olvashatók legyenek.

Minden függvényparaméter jelentős a gyökérfolyamatban, csak a recvbuf, a recvcount, a recvtype, a root és a comm paraméterek jelentősek a többi folyamat esetében. A gyökér - és a comm-paramétereknek minden folyamaton azonosnak kell lenniük.

A sendcount által megadott típusaírásnak és a gyökérfolyamat sendtype paramétereinek meg kell egyeznie a recvcount által megadott típusaaírással, valamint az összes folyamat recvtype paramétereivel. Ezért az elküldött adatok mennyiségének meg kell egyeznie a folyamatpárok között fogadott adatok mennyiségével. A feladó és a fogadó közötti különböző típusú leképezések továbbra is engedélyezettek.

Ha a comm egy intrakommunikátor, az eredmény olyan, mintha a gyökér n küldési műveletet MPI_Send(sendbuf + displs[i]*extent(sendtype), sendcounts[i], sendtype, I, …)hajtott volna végre; és minden folyamat végrehajtott egy fogadást. MPI_Recv(recvbuf, recvcount, recvtype, i,…)

Ha a comm paraméter egy interkommunikátorra hivatkozik, akkor a hívás magában foglalja a kommunikációban lévő összes folyamatot, de egyetlen csoporttal, az A csoporttal, amely meghatározza a gyökérfolyamatot. A másik csoport (B) összes folyamata ugyanazt az értéket állítja be a gyökérparaméterben, azaz az A csoport gyökérfolyamatának rangját. A gyökérfolyamat beállítja a gyökérparaméterben MPI_ROOT értéket. Az A csoport összes többi folyamata beállítja a gyökérparaméterben MPI_PROC_NULL értéket. Az adatok a gyökérfolyamatból a B csoport összes folyamatára lesznek továbbítva. A B csoport folyamatainak pufferparamétereinek konzisztensnek kell lenniük a gyökérfolyamat pufferparaméterével .

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_Gather

MPI_Gatherv

MPI_Scatter