Freigeben über


MPI_Ireduce Funktion

Führt einen globalen Reduzierungsvorgang (z. B. Summe, Maximum oder logisches und) für alle Mitglieder einer Gruppe auf nicht blockierende Weise aus.

Syntax

int MPIAPI MPI_Ireduce(
  _In_      void         *sendbuf,
  _Out_opt_ void         *recvbuf,
  _In_      int          count,
  _In_      MPI_Datatype datatype,
  _In_      MPI_Op       op,
  _In_      int          root,
  _In_      MPI_Comm     comm,
  _Out_     MPI_Request  *request
);

Parameter

  • sendbuf [in]
    Der Zeiger auf einen Puffer, der die Daten aus diesem Rang enthält, die in der Reduzierung verwendet werden sollen. Der Puffer besteht aus der Anzahl aufeinanderfolgender Elemente der MPI_Datatype , die durch das Datentyphandle angegeben werden. Die Nachrichtenlänge wird in Bezug auf die Anzahl der Elemente und nicht die Anzahl der Bytes angegeben.

  • recvbuf [out, optional]
    Der Zeiger auf einen Puffer, um das Ergebnis des Reduzierungsvorgangs zu empfangen. Dieser Parameter ist nur beim Stammprozess von Bedeutung.

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

  • Datentyp [in]
    Das MPI_Datatype Handle, das den Datentyp jedes Elements in sendbuf darstellt.

  • op [in]
    Das MPI_Op-Handle , das den auszuführenden globalen Reduzierungsvorgang angibt. Das Handle kann einen integrierten oder anwendungsdefinierten Vorgang angeben. Eine Liste der vordefinierten Vorgänge finden Sie im Thema MPI_Op .

  • root [in]
    Der Rang des empfangenden Prozesses innerhalb des MPI_Commcomm.

  • 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_IREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR) 
        <type> SENDBUF(*), RECVBUF(*) 
        INTEGER COUNT, DATATYPE, OP, ROOT, 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 v6

Header

Mpi.h; Mpif.h

Bibliothek

Msmpi.lib

DLL

Msmpi.dll

Weitere Informationen

MPI-Kollektivfunktionen

MPI_Datatype

MPI_Op

MPI_Reduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome