Freigeben über


MPI_Igatherv-Funktion

Sammelt Variablendaten von allen Mitgliedern einer Gruppe auf nicht blockierende Weise zu einem Mitglied.

Syntax

int MPIAPI MPI_Igatherv(
  _In_opt_  const void         *sendbuf,
  _In_            int          sendcount,
  _In_            MPI_Datatype sendtype,
  _Out_opt_       void         *recvbuf,
  _In_opt_  const int          recvcounts[],
  _In_opt_  const int          displs[],
  _In_            MPI_Datatype recvtype,
  _In_            int          root,
  _In_            MPI_Comm     comm,
  _Out_           MPI_Request  *request
);

Parameter

  • sendbuf [in, optional]
    Das Handle für einen Puffer, der die Daten enthält, die an den Stammprozess gesendet werden sollen.

    Wenn der comm-Parameter auf einen Intrakommunikations-Parameter verweist, können Sie eine direkte Option angeben, indem Sie in allen Prozessen MPI_IN_PLACE angeben. Die Parameter sendcount und sendtype werden ignoriert. Jeder Prozess gibt Daten in das entsprechende Empfangspufferelement ein. Der nth-Prozess sendet Daten an das nth-Element des Empfangspuffers. Es wird davon ausgegangen, dass sich die vom Stammprozess gesendeten Daten an der richtigen Stelle im Empfangspuffer befinden.

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

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

  • recvbuf [out, optional]
    Das Handle für einen Puffer im Stammprozess, der die Daten enthält, die von jedem Prozess empfangen werden, einschließlich der Daten, die vom Stammprozess gesendet werden. Dieser Parameter ist nur beim Stammprozess von Bedeutung. Der parameter recvbuf wird für alle Nicht-Stammprozesse ignoriert.

  • recvcounts[] [in, optional]
    Die Anzahl der Elemente, die von jedem Prozess empfangen werden. Jedes Element im Array entspricht dem Rang des sendenden Prozesses. Wenn die Anzahl null ist, ist der Datenteil der Nachricht leer. Dieser Parameter ist nur beim Stammprozess von Bedeutung.

  • displs[] [in, optional]
    Der Speicherort der Daten aus den einzelnen Communicatorprozessen relativ zum recvbuf-Parameter . Die vom Prozess j empfangenen Daten werden in den Empfangspuffer der Displs[j] -Elemente des Stammprozessoffsets vom sendbuf-Zeiger eingefügt.

    In den Parameterarrays recvbuf, recvcounts und displs bezieht sich das nth-Element jedes Arrays auf die Daten, die vom n-tenCommunicator-Prozess empfangen werden.

    Dieser Parameter ist nur beim Stammprozess von Bedeutung.

  • recvtype [in]
    Der Datentyp jedes Elements im Puffer. Dieser Parameter ist nur beim Stammprozess von Bedeutung.

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

  • comm [in]
    Das MPI_Comm Communicatorhandle.

  • Request [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_IGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE,
    ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, REQUEST, IERROR

Hinweise

Ein nicht blockierende Aufruf initiiert einen kollektiven Reduzierungsvorgang, der in einem separaten Vervollständigungsaufruf abgeschlossen werden muss. Nach der Einleitung kann der Vorgang unabhängig von berechnungen oder anderer Kommunikation an den beteiligten Prozessen fortgesetzt werden. Auf diese Weise können nicht blockierende Reduzierungsvorgänge mögliche Synchronisierungseffekte von Reduzierungsvorgängen verringern, indem sie im "Hintergrund" ausgeführt werden.

Alle Abschlussaufrufe (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-Kollektive Funktionen

MPI_Datatype

MPI_Gatherv

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome