funktionen MPI_Recv
Utför en mottagningsåtgärd och returnerar inte förrän ett matchande meddelande tas emot.
Syntax
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
Parametrar
buf [in, optional]
En pekare till bufferten som innehåller de data som ska skickas.Räkna
Antalet element i bufferten. Om datadelen i meddelandet är tom anger du parametern count till 0.Datatyp
Datatypen för elementen i buffertmatrisen.Källkod
Rangordningen för sändningsprocessen inom den angivna kommunikatören. Ange den MPI_ANY_SOURCE konstanten för att ange att alla källor är godtagbara.Etiketten
Meddelandetaggen som används för att skilja mellan olika typer av meddelanden. Ange MPI_ANY_TAG konstant för att ange att alla taggar är acceptabla.Comm
Handtaget till kommunikatören.status [out]
Vid retur innehåller en pekare till en MPI_Status struktur där information om det mottagna meddelandet lagras.
Returvärde
Returnerar MPI_SUCCESS vid lyckat resultat. Annars är returvärdet en felkod.
I Fortran lagras returvärdet i parametern 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
Kommentarer
Längden på det mottagna meddelandet måste vara mindre än eller lika med längden på mottagningsbufferten. Den här funktionen returnerar ett spillfel om alla inkommande data inte passar in i mottagningsbufferten.
Om det mottagna meddelandet är kortare än bufferten ändras bara den del av bufferten som motsvarar meddelandet. Resten av bufferten ändras inte.
Processer kan skicka meddelanden till sig själva. Det är dock osäkert att göra det med blockeringsåtgärderna för att skicka och ta emot, MPI_Send och MPI_Recv, eftersom dessa blockerande åtgärder för att skicka och ta emot kan orsaka ett dödläge.
Anteckning
Det finns en asymmetri mellan sändnings- och mottagningsåtgärder. En mottagningsåtgärd kan ta emot meddelanden från en godtycklig avsändare, men en sändningsåtgärd måste ange en unik mottagare. Detta implementerar en push-kommunikationsstil, där dataöverföringen utförs av avsändaren, i stället för ett pull-format där dataöverföringen utförs av mottagaren.
Krav
Produkt |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package eller HPC Pack 2008 Client Utilities |
Huvud |
Mpi.h; Mpif.h |
Bibliotek |
Msmpi.lib |
DLL |
Msmpi.dll |