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 |