MPI_Iscatterv-Funktion
Syntax
int MPIAPI MPI_Iscatterv(
_In_opt_ const void *sendbuf,
_In_opt_ const int sendcounts[],
_In_opt_ const int displs[],
_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 vom Stammprozess zu sendenden Daten enthält.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.
sendcounts[] [in, optional]
Die Anzahl der Elemente, die an jeden Prozess gesendet werden sollen. Wenn sendcounts[i] null ist, ist der Datenteil der Nachricht für diesen Prozess leer.Dieser Parameter wird für alle Nicht-Stammprozesse ignoriert.
displs[] [in, optional]
Die Speicherorte der Daten, die an jeden Kommunikatorprozess gesendet werden sollen. Jede Position im Array ist relativ zum entsprechenden Element des sendbuf-Arrays .In den Parameterarrays sendbuf, sendcounts und displs verweist das nth-Element jedes Arrays auf die Daten, die an den n thcommunicator-Prozess gesendet werden sollen.
Dieser Parameter ist nur beim Stammprozess von Bedeutung.
sendtype [in]
Der Datentyp jedes Elements im Puffer.Dieser Parameter wird für alle Nicht-Stammprozesse ignoriert.
recvbuf [out, optional]
Der Zeiger auf 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 Datentyp der Elemente im Empfangspuffer.root [in]
Der Rang im Sendevorgang 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_ISCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNTS(*), DISPLS(*), 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 |