Sdílet prostřednictvím


MPI_Recv funkce

Provede operaci příjmu a nevrátí se, dokud není přijata odpovídající zpráva.

Syntaxe

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

Parametry

  • buf [v, volitelné]
    Ukazatel na vyrovnávací paměť obsahující data, která se mají odeslat.

  • Počet
    Počet prvků ve vyrovnávací paměti. Pokud je datová část zprávy prázdná, nastavte parametr count na hodnotu 0.

  • Datatype
    Datový typ prvků v poli vyrovnávací paměti.

  • Zdroj
    Pořadí procesu odesílání v rámci zadaného komunikátoru. Zadejte MPI_ANY_SOURCE konstantu, abyste určili, že jakýkoli zdroj je přijatelný.

  • Značku
    Značka zprávy, která se používá k rozlišení různých typů zpráv. Zadejte konstantu MPI_ANY_TAG , která označuje, že jakákoli značka je přijatelná.

  • Komunikace
    Popisovač komunikátoru.

  • status [out]
    Při vrácení obsahuje ukazatel na strukturu MPI_Status , kde jsou uloženy informace o přijaté zprávě.

Vrácená hodnota

Vrátí MPI_SUCCESS při úspěchu. V opačném případě je návratovou hodnotou kód chyby.

V nástroji Fortran je vrácená hodnota uložena v parametru IERROR .

Fortran

    MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
        <type> BUF(*)
        INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR

Poznámky

Délka přijaté zprávy musí být menší než nebo rovna délce vyrovnávací paměti pro příjem. Tato funkce vrátí chybu přetečení, pokud se všechna příchozí data nevejdou do vyrovnávací paměti příjmu.

Pokud je přijatá zpráva kratší než vyrovnávací paměť, upraví se pouze část vyrovnávací paměti, která odpovídá zprávě. Zbývající část vyrovnávací paměti se nezmění.

Procesy můžou posílat zprávy samy sobě. Je to ale nebezpečné u blokujících operací odesílání a přijímání , MPI_Send a MPI_Recv, protože tyto blokující operace odesílání a přijímání můžou způsobit vzájemné zablokování.

Poznámka

Mezi operacemi odesílání a příjmu je asymetrie. Operace příjmu může přijímat zprávy od libovolného odesílatele, ale operace odeslání musí určit jedinečného příjemce. To implementuje styl komunikace nabízených oznámení, kdy přenos dat provádí odesílatel, místo stylu vyžádání, kdy přenos dat provádí příjemce.

 

Požadavky

Produkt

HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package nebo HPC Pack 2008 Client Utilities

Hlavička

Mpi.h; Mpif.h

Knihovna

Msmpi.lib

DLL

Msmpi.dll

Viz také

Funkce MPI typu point-to-point

MPI_Send

MPI_Irecv

MPI_Datatype

MPI_Comm

MPI_Status