MPI_Recv functie
Voert een ontvangstbewerking uit en retourneert niet totdat een overeenkomend bericht is ontvangen.
Syntaxis
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
Parameters
buf [in, optioneel]
Een aanwijzer naar de buffer die de gegevens bevat die moeten worden verzonden.Tellen
Het aantal elementen in de buffer. Als het gegevensgedeelte van het bericht leeg is, stelt u de parameter count in op 0.Datatype
Het gegevenstype van de elementen in de buffermatrix.bron
De rang van het verzendproces binnen de opgegeven communicator. Geef de MPI_ANY_SOURCE constante op om op te geven dat elke bron acceptabel is.Tag
De berichttag die wordt gebruikt om verschillende typen berichten te onderscheiden. Geef de MPI_ANY_TAG constante op om aan te geven dat een tag acceptabel is.Comm
Het handvat naar de communicator.status [uit]
Bij terugkomst bevat een verwijzing naar een MPI_Status structuur waar informatie over het ontvangen bericht wordt opgeslagen.
Retourwaarde
Retourneert MPI_SUCCESS bij succes. Anders is de retourwaarde een foutcode.
In Fortran wordt de retourwaarde opgeslagen in de parameter 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
Opmerkingen
De lengte van het ontvangen bericht moet kleiner zijn dan of gelijk zijn aan de lengte van de ontvangstbuffer. Deze functie retourneert een overloopfout als niet alle binnenkomende gegevens in de ontvangstbuffer passen.
Als het ontvangen bericht korter is dan de buffer, wordt alleen het deel van de buffer dat overeenkomt met het bericht gewijzigd. De rest van de buffer wordt niet gewijzigd.
Processen kunnen berichten naar zichzelf verzenden. Het is echter onveilig om dit te doen met de blokkerende verzend- en ontvangstbewerkingen , MPI_Send en MPI_Recv, omdat deze blokkerende verzend- en ontvangstbewerkingen een impasse kunnen veroorzaken.
Notitie
Er is een asymmetrie tussen de verzend- en ontvangstbewerkingen. Een ontvangstbewerking kan berichten van een willekeurige afzender accepteren, maar bij een verzendbewerking moet een unieke ontvanger worden opgegeven. Hiermee wordt een push-communicatiestijl geïmplementeerd, waarbij de gegevensoverdracht wordt uitgevoerd door de afzender, in plaats van een pull-stijl waarbij de gegevensoverdracht wordt uitgevoerd door de ontvanger.
Vereisten
Product |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package of HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Bibliotheek |
Msmpi.lib |
DLL |
Msmpi.dll |