Delen via


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

Zie ook

Collectieve MPI-functies

MPI_Datatype

MPI_Op

MPI_Allreduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome