MPI_Allgather-Funktion
Sammelt Daten von allen Mitgliedern einer Gruppe und sendet die Daten an alle Mitglieder der Gruppe. Die MPI_Allgather-Funktion ähnelt der funktion MPI_Gather , mit der Ausnahme, dass sie die Daten an alle Prozesse und nicht nur an den Stamm sendet. Die Verwendungsregeln für MPI_Allgather entsprechen den Regeln für MPI_Gather.
Syntax
int MPIAPI MPI_Allgather(
_In_ void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
MPI_Comm comm
);
Parameter
sendbuf [in]
Der Zeiger auf die Daten, die an alle Prozesse in der Gruppe gesendet werden sollen. Die Anzahl und der Datentyp der Elemente im Puffer werden in den Parametern sendcount und sendtype angegeben. Jedes Element im Puffer entspricht einem Prozess in der Gruppe.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.
sendcount [in]
Die Anzahl der Elemente im Puffer, die im sendbuf-Parameter angegeben ist. Wenn sendcount null ist, ist der Datenteil der Nachricht leer.sendtype [in]
Der MPI-Datentyp der Elemente im Sendepuffer.recvbuf [out]
Der Zeiger auf einen Puffer, der die Daten enthält, die von jedem 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 null ist, ist der Datenteil der Nachricht leer.recvtype
Der MPI-Datentyp der Elemente im Empfangspuffer.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_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
Hinweise
Die Typsignatur, die dem sendtype-Parameter in einem Prozess zugeordnet ist, muss gleich der Typsignatur sein, die dem recvtype-Parameter in jedem anderen Prozess zugeordnet ist.
Wenn der comm-Parameter auf einen Intrakommunikations-Parameter verweist, ist das Ergebnis eines Aufrufs von MPI_ALLGATHER(...)
so, als ob alle Prozesse ausgeführt n für root = 0 , ..., n-1
aufrufenMPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm)
.
Wenn der comm-Parameter auf einen Intercommunicator verweist, trägt jeder Prozess einer Gruppe, z. B. Gruppe A, die Anzahl der Datenelemente bei, die im sendcount-Parameter angegeben sind. Diese Daten werden verkettet, und das Ergebnis wird bei jedem Prozess in der anderen Gruppe, Gruppe B, gespeichert. Umgekehrt wird die Verkettung der Daten der Prozesse in Gruppe B bei jedem Prozess in Gruppe A gespeichert. Die Sendepufferparameter in Gruppe A müssen mit den Empfangspufferparametern in Gruppe B konsistent sein und umgekehrt.
Die Anzahl der Elemente, die von Prozessen in Gruppe A gesendet werden, muss nicht der Anzahl von Elementen entsprechen, die von Prozessen in Gruppe B gesendet werden. Insbesondere können Sie Daten nur in eine Richtung verschieben, indem Sie sendcount == 0 für die Kommunikation in umgekehrter Richtung angeben.
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 |