Megosztás:


MPI_Recv függvény

Fogadási műveletet hajt végre, és nem ad vissza, amíg meg nem érkezik egy megfelelő üzenet.

Szintaxis

int MPIAPI MPI_Recv(
  _In_opt_ void         *buf,
           int          count,
           MPI_Datatype datatype,
           int          source,
           int          tag,
           MPI_Comm     comm,
  _Out_    MPI_Status   *status
);

Paraméterek

  • buf [in, nem kötelező]
    Az elküldendő adatokat tartalmazó pufferre mutató mutató.

  • Számít
    A puffer elemeinek száma. Ha az üzenet adatrésze üres, állítsa a count paramétert 0-ra.

  • Adattípus
    A puffertömb elemeinek adattípusa.

  • Forrás
    A küldési folyamat rangja a megadott kommunikátorban. Adja meg a MPI_ANY_SOURCE konstanst, hogy bármely forrás elfogadható legyen.

  • Tag
    A különböző típusú üzenetek megkülönböztetésére szolgáló üzenetcímke. Adja meg a MPI_ANY_TAG állandót, amely azt jelzi, hogy bármely címke elfogadható.

  • Comm
    A kommunikátor fogantyúja.

  • status [out]
    Visszatéréskor egy MPI_Status struktúrára mutató mutatót tartalmaz, ahol a kapott üzenetre vonatkozó információk tárolódnak.

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_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
        <type> BUF(*)
        INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR

Megjegyzések

A fogadott üzenet hosszának meg kell egyeznie a fogadási puffer hosszával. Ez a függvény túlcsordulási hibát ad vissza, ha az összes bejövő adat nem fér el a fogadó pufferbe.

Ha a fogadott üzenet rövidebb, mint a puffer, csak a puffernek az üzenetnek megfelelő része módosul. A puffer fennmaradó része nem módosul.

A folyamatok üzeneteket küldhetnek maguknak. Ez azonban nem biztonságos a küldési és fogadási műveletek blokkolásával, MPI_Send és MPI_Recv, mivel ezek a blokkoló küldési és fogadási műveletek holtpontot okozhatnak.

Megjegyzés

A küldési és fogadási műveletek között aszimmetria van. A fogadási művelet fogadhatja egy tetszőleges feladó üzeneteit, de a küldési műveletnek egyedi fogadót kell megadnia. Ez egy leküldéses kommunikációs stílust valósít meg, ahol az adatátvitelt a feladó végzi, nem pedig egy lekéréses stílust, ahol az adatátvitelt a fogadó végzi.

 

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 pont–pont függvények

MPI_Send

MPI_Irecv

MPI_Datatype

MPI_Comm

MPI_Status