MPI_Scatter Funktion
Streut Daten von einem Element auf alle Mitglieder einer Gruppe. Die MPI_Scatter-Funktion führt die Inverse des Vorgangs aus, der von der MPI_Gather-Funktion ausgeführt wird.
Syntax
int MPIAPI MPI_Scatter(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parameter
sendbuf [in]
Das Handle an einen Puffer, der die vom Stammprozess zu sendenden Daten enthält.Der sendbuf-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
Die Anzahl der Elemente im Sendepuffer. Wenn sendcount 0 ist, ist der Datenteil der Nachricht leer.Der sendcount-Parameter wird für alle Nicht-Stammprozesse ignoriert.
sendtype
Der Datentyp jedes Elements im Puffer.Der sendcount-Parameter wird für alle Nicht-Stammprozesse ignoriert.
recvbuf [out]
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
Die Anzahl der Elemente im Empfangspuffer. Wenn die Anzahl 0 ist, ist der Datenteil der Nachricht leer.recvtype
Der Datentyp der Elemente im Empfangspuffer.root
Der Rang des Sendevorgangs innerhalb des angegebenen Kommunikators.comm
Das MPI_Comm Communicatorhandle.
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_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR
Hinweise
Der Effekt der MPI_Scatter-Funktion ist, als würde der Stammprozess mithilfe der MPI_Send-Funktion eine Nachricht senden. Diese Nachricht ist in n gleiche Segmente unterteilt, eins für jedes Mitglied der Gruppe. Das ith-Segment wird an den ith-Prozess in der Gruppe gesendet.
Wenn comm ein Intrakommunikationsgeber ist, ist das Ergebnis so, als ob der Stamm n Send-Vorgänge MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)
ausgeführt hat; und jeder Prozess hat einen Empfangsvorgang ausgeführt, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
Die Typsignatur, die von den Parametern sendcount und sendtype für den Stammprozess angegeben wird, muss gleich der Typsignatur sein, die vom recvcount angegeben wird, und recvtype-Parametern für alle Prozesse. Daher muss die Menge der gesendeten Daten der Datenmenge entsprechen, die zwischen einem beliebigen Prozesspaar empfangen wird. Unterschiedliche Typzuordnungen zwischen Absender und Empfänger sind weiterhin zulässig.
Alle Funktionsparameter sind für den Stammprozess von Bedeutung, nur die Parameter recvbuf, recvcount, recvtype, root und comm sind für die anderen Prozesse von Bedeutung. Die Root- und comm-Parameter müssen für alle Prozesse identisch sein.
Die Angabe von Anzahlen und Typen sollte nicht dazu führen, dass ein Speicherort im Stamm mehr als einmal gelesen wird.
Wenn der comm-Parameter auf einen Intercommunicator verweist, umfasst der Aufruf alle Prozesse im Intercommunicator, aber mit einer Gruppe, Gruppe A, die den Stammprozess definiert. Alle Prozesse in der anderen Gruppe, Gruppe B, legen denselben Wert im Stammparameter fest, d. h. den Rang des Stammprozesses in Gruppe A. Der Stammprozess legt den Wert MPI_ROOT im Stammparameter fest. Alle anderen Prozesse in Gruppe A legen den Wert MPI_PROC_NULL im Stammparameter fest. Daten werden aus dem Stammprozess an alle Prozesse in Gruppe B übertragen. Die Pufferparameter der Prozesse in Gruppe B müssen mit dem Pufferparameter des Stammprozesses konsistent sein.
Anforderungen
Produkt |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package oder HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Bibliothek |
Msmpi.lib |
DLL |
Msmpi.dll |