Udostępnij za pośrednictwem


MPI_Recv, funkcja

Wykonuje operację odbierania i nie zwraca się do momentu odebrania pasującego komunikatu.

Składnia

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 [in, opcjonalnie]
    Wskaźnik do buforu zawierającego dane do wysłania.

  • Liczba
    Liczba elementów w buforze. Jeśli część danych komunikatu jest pusta, ustaw parametr count na 0.

  • Datatype
    Typ danych elementów w tablicy buforów.

  • Źródła
    Ranga procesu wysyłania w określonym komunikatorze. Określ stałą MPI_ANY_SOURCE , aby określić, że dowolne źródło jest dopuszczalne.

  • Tag
    Tag komunikatu używany do rozróżniania różnych typów komunikatów. Określ stałą MPI_ANY_TAG , aby wskazać, że dowolny tag jest akceptowalny.

  • Comm
    Uchwyt do komunikatora.

  • status [out]
    Po powrocie zawiera wskaźnik do struktury MPI_Status , w której są przechowywane informacje o odebranym komunikacie.

Wartość zwracana

Zwraca MPI_SUCCESS po powodzeniu. W przeciwnym razie zwracana wartość jest kodem błędu.

W fortran wartość zwracana jest przechowywana w parametrze 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

Uwagi

Długość odebranego komunikatu musi być mniejsza lub równa długości buforu odbierania. Ta funkcja zwraca błąd przepełnienia, jeśli wszystkie dane przychodzące nie mieszczą się w buforze odbierania.

Jeśli odebrany komunikat jest krótszy niż bufor, zmodyfikowana jest tylko część buforu odpowiadająca komunikatowi. Pozostała część buforu nie jest modyfikowana.

Procesy mogą wysyłać komunikaty do siebie. Jednak jest to niebezpieczne w przypadku blokowania operacji wysyłania i odbierania, MPI_Send i MPI_Recv, ponieważ te blokujące operacje wysyłania i odbierania mogą powodować zakleszczenie.

Uwaga

Istnieje asymetria między operacjami wysyłania i odbierania. Operacja odbierania może akceptować komunikaty od dowolnego nadawcy, ale operacja wysyłania musi określać unikatowy odbiornik. Implementuje to styl komunikacji wypychanej, w którym transfer danych jest przenoszony przez nadawcę, a nie styl ściągania, w którym transfer danych jest przenoszony przez odbiorcę.

 

Wymagania

Produkt

Pakiet redystrybucyjny HPC Pack 2012 MS-MPI, pakiet redystrybucyjny HPC Pack 2008 R2 MS-MPI, pakiet redystrybucyjny HPC Pack 2008 MS-MPI lub narzędzia klienckie HPC Pack 2008

Nagłówek

Mpi.h; Mpif.h

Biblioteka

Msmpi.lib

DLL

Msmpi.dll

Zobacz też

Funkcje punkt-punkt MPI

MPI_Send

MPI_Irecv

MPI_Datatype

MPI_Comm

MPI_Status