Funktionsübersicht
. .
Kollektive Operationen
Hilfesystem für den Message Passing Interface Standard MPI
MPI_Allgatherv
Sammelt Daten von allen Prozessen einer Gruppe und verbreitet das
Resultat an alle anderen (erlaubt Displacements und unterschiedlich
große Blöcke)
Syntax:
MPI_Allgatherv(sendbuf, sendcount, sendtype, recvbuf, rcounts,
rdispls, recvtype, comm)
Input Parameter:
sendbuf - Startadresse des Sendepuffers
sendcount - Anzahl der Elemente im Sendepuffer (integer)
sendtype - Datentyp der Elemente des Sendepuffers (handle)
rcounts - Anzahl der Elemente, die von jedem einzelnen Prozeß
empfangen werden (array of integer)
rcounts[i] gibt an, wieviele Elemente von Prozeß i empfangen werden.
rdispls - Displacements relativ zu recvbuf (array of integer)
rdispls[i] gibt an, an welche Stelle die Daten, die von Prozeß i
empfangen werden, geschrieben werden.
recvtype - Datentyp der Elemente im Empfangspuffer (handle)
comm - Kommunikator (handle)
Output Parameter:
recvbuf - Anfangsadresse des Empfangspuffers
Anmerkung:
Die Größe der beiden Felder muß der Anzahl der Elemente in der Gruppe
entsprechen.
Aufruf:
#include "mpi.h"
...
int numprocs, sendcount;
int *rcounts, *rdispls;
void *sendbuf, *recvbuf;
MPI_Datatype sendtype, recvtype;
MPI_Comm comm;
...
MPI_Comm_size(comm, &numprocs);
...
rcounts=(* int)malloc(numprocs*sizeof(int));
rdispls=(* int)malloc(numprocs*sizeof(int));
for (i=0; i<numprocs; i++) {
rcounts[i]= ...
rdispls[i]= ...
}
MPI_Allgatherv(sendbuf, sendcount, sendtype,
recvbuf, rcounts, rdispls, recvtype,
comm);
...