Freigeben über


MPI_Iallreduce Funktion

Kombiniert Werte aus allen Prozessen und verteilt das Ergebnis nicht blockierend an alle Prozesse zurück.

Syntax

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
);

Parameter

  • sendbuf [in, optional]
    Der Zeiger auf die Daten, die an alle Prozesse in der Gruppe gesendet werden sollen. Die Anzahl und der Datentyp der Elemente im Puffer werden in den Parametern count und datatype angegeben.

    Wenn der comm-Parameter auf einen Intracommunicator verweist, können Sie eine direkte Option angeben, indem Sie in allen Prozessen MPI_IN_PLACE angeben. In diesem Fall werden die Eingabedaten bei jedem Prozess aus dem Empfangspuffer übernommen, wo sie durch die Ausgabedaten ersetzt werden.

  • recvbuf [out, optional]
    Der Zeiger auf einen Puffer, um das Ergebnis des Reduzierungsvorgangs zu empfangen.

  • Anzahl [in]
    Die Anzahl der Elemente, die von diesem Prozess gesendet werden sollen.

  • Datentyp [in]
    Der Datentyp jedes Elements im Puffer. Dieser Parameter muss mit dem im op-Parameter angegebenen Vorgang kompatibel sein.

  • op [in]
    Der auszuführende Vorgang zur globalen Reduzierung. Das Handle kann einen integrierten oder anwendungsdefinierten Vorgang angeben. Eine Liste vordefinierter Vorgänge finden Sie unter MPI_Op.

  • comm [in]
    Das MPI_Comm Communicatorhandle.

  • Anforderung [out]
    Das MPI_Request Handle, das den Kommunikationsvorgang darstellt.

Rückgabewert

Gibt MPI_SUCCESS nach Erfolg zurück. Andernfalls ist der Rückgabewert ein Fehlercode.

In Fortran wird der Rückgabewert im IERROR-Parameter gespeichert.

Fortran

    MPI_IALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER COUNT, DATATYPE, OP, COMM, REQUEST, IERROR

Hinweise

Ein nicht blockierende Aufruf initiiert einen Sammelreduktionsvorgang, der in einem separaten Vervollständigungsaufruf abgeschlossen werden muss. Nach der Inbetriebnahme kann der Vorgang unabhängig von der Berechnung oder sonstigen Kommunikation an den teilnehmenden Prozessen ausgeführt werden. Auf diese Weise können nicht blockierende Reduzierungsvorgänge mögliche Synchronisierungseffekte von Reduzierungsvorgängen minimieren, indem sie im "Hintergrund" ausgeführt werden.

Alle Vervollständigungsaufrufe (z. B. MPI_Wait) werden für nicht blockierende Reduzierungsvorgänge unterstützt.

Anforderungen

Produkt

Microsoft MPI v7

Header

Mpi.h; Mpif.h

Bibliothek

Msmpi.lib

DLL

Msmpi.dll

Weitere Informationen

MPI-Kollektivfunktionen

MPI_Datatype

MPI_Op

MPI_Allreduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome