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 |