MPI_Iallreduce functie
Combineert waarden uit alle processen en distribueert het resultaat op een niet-blokkerende manier terug naar alle processen.
Syntaxis
int MPIAPI MPI_Iallreduce(
_In_opt_ const void *sendbuf,
_Out_opt_ void *recvbuf,
_In_ int count,
_In_ MPI_Datatype datatype,
_In_ MPI_Op op,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
Parameters
sendbuf [in, optioneel]
De aanwijzer naar de gegevens die naar alle processen in de groep moeten worden verzonden. Het aantal en het gegevenstype van de elementen in de buffer worden opgegeven in de parameters aantal en gegevenstype .Als de parameter comm verwijst naar een intracommunicator, kunt u een in-place optie opgeven door MPI_IN_PLACE in alle processen op te geven. In dit geval worden de invoergegevens bij elk proces uit de ontvangstbuffer gehaald, waar deze worden vervangen door de uitvoergegevens.
recvbuf [uit, optioneel]
De aanwijzer naar een buffer om het resultaat van de reductiebewerking te ontvangen.aantal [in]
Het aantal elementen dat vanuit dit proces moet worden verzonden.gegevenstype [in]
Het gegevenstype van elk element in de buffer. Deze parameter moet compatibel zijn met de bewerking zoals opgegeven in de parameter op .op [in]
De globale reductiebewerking die moet worden uitgevoerd. De ingang kan een ingebouwde of door de toepassing gedefinieerde bewerking aangeven. Zie MPI_Op voor een lijst met vooraf gedefinieerde bewerkingen.comm [in]
De MPI_Comm communicator-ingang.aanvraag [uit]
De MPI_Request ingang die de communicatiebewerking vertegenwoordigt.
Retourwaarde
Retourneert MPI_SUCCESS bij succes. Anders is de retourwaarde een foutcode.
In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .
Fortran
MPI_IALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, REQUEST, IERROR
Opmerkingen
Een niet-blokkerende oproep initieert een collectieve reductiebewerking die moet worden voltooid in een afzonderlijke voltooiingsoproep. Zodra de bewerking is geïnitieerd, kan deze onafhankelijk van berekeningen of andere communicatie bij de deelnemende processen worden voortgezet. Op deze manier kunnen niet-blokkerende reductiebewerkingen mogelijke synchronisatie-effecten van reductiebewerkingen beperken door ze op de 'achtergrond' uit te voeren.
Alle voltooiingsoproepen (bijvoorbeeld MPI_Wait) worden ondersteund voor niet-blokkerende reductiebewerkingen.
Vereisten
Product |
Microsoft MPI v7 |
Header |
Mpi.h; Mpif.h |
Bibliotheek |
Msmpi.lib |
DLL |
Msmpi.dll |