Freigeben über


MPI_Iscatter-Funktion

Streut Daten von einem Mitglied auf alle Mitglieder einer Gruppe auf nicht blockierende Weise. Diese Funktion führt die Inverse des Vorgangs aus, der von der MPI_Igather-Funktionausgeführt wird.

Syntax

int MPIAPI MPI_Iscatter(
  _In_opt_  const void         *sendbuf,
  _In_             int         sendcount,
  _In_            MPI_Datatype sendtype,
  _Out_opt_       void         *recvbuf,
  _In_            int          recvcount,
  _In_            MPI_Datatype recvtype,
  _In_            int          root,
  _In_            MPI_Comm     comm,
  _Out_           MPI_Request  *request
);

Parameter

  • sendbuf [in, optional]
    Der Zeiger auf einen Puffer, der die Daten enthält, die an den Stammprozess gesendet werden sollen.

    Dieser Parameter wird für alle Nicht-Stammprozesse ignoriert.

    Wenn der comm-Parameter auf einen Intrakommunikationsgeber verweist, können Sie eine direkte Option angeben, indem Sie MPI_IN_PLACE im Stammprozess angeben. Die Parameter recvcount und recvtype werden ignoriert. Der gestreute Vektor wird weiterhin als n-Segmente betrachtet, wobei n die Gruppengröße ist. das Segment, das dem Stammprozess entspricht, wird nicht verschoben.

  • sendcount [in]
    Die Anzahl der Elemente im Sendepuffer. Wenn sendcount 0 ist, ist der Datenteil der Nachricht leer.

    Dieser Parameter wird für alle Nicht-Stammprozesse ignoriert.

  • sendtype [in]
    Der Datentyp jedes Elements im Puffer.

    Dieser Parameter wird für alle Nicht-Stammprozesse ignoriert.

  • recvbuf [out, optional]
    Das Handle für einen Puffer, der die Daten enthält, die für jeden Prozess empfangen werden. Die Anzahl und der Datentyp der Elemente im Puffer werden in den Parametern recvcount und recvtype angegeben.

  • recvcount [in]
    Die Anzahl der Elemente im Empfangspuffer. Wenn die Anzahl 0 ist, ist der Datenteil der Nachricht leer.

  • recvtype [in]
    Der MPI-Datentyp der Elemente im Empfangspuffer.

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

  • 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_ISCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, 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 v7

Header

Mpi.h; Mpif.h

Bibliothek

Msmpi.lib

DLL

Msmpi.dll

Weitere Informationen

MPI-Kollektivfunktionen

MPI_Datatype

MPI_Scatter

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome