Funktionsübersicht
. .
Kollektive Operationen
Hilfesystem für den Message Passing Interface Standard MPI
MPI_Reduce_scatter
Kombiniert Daten von allen Prozessen einer Gruppe und verteilt das Ergebnis
an alle
Syntax:
MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, datatype, op, comm)
Input Parameter:
sendbuf - Anfangsadresse des Sendepuffers
recvcounts - Anzahl der zu sendenden Elemente (array of integer)
sendcnts[i] gibt an, wieviele Elemente an den Prozeß i zu schicken sind. Das
Feld muß soviele Einträge haben wie Prozesse in der Gruppe comm sind, und es
muss für alle rufenden Prozesse gleich sein.
datatype - Datentyp der Elemente in sendbuf (handle)
op - Operation (handle)
entweder eine der vordefinierten oder eine eigene
comm - Kommunikator (handle)
Output Parameter:
recvbuf - Anfangsadresse des Empfangsbuffers
Aufruf:
#include "mpi.h"
...
int numprocs, i;
int *recvcounts;
void *sendbuf, *recvbuf;
MPI_Datatype datatype;
MPI_Op op;
MPI_Comm comm;
...
MPI_Comm_size(comm, &numprocs);
recvcounts=(* int)malloc(numprocs*sizeof(int));
for (i=0; i<numprocs; i++) {
... counts[i] belegen ...
}
...
MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, datatype,
op, comm);
...