Syntax:
Im Empfangspuffer werden die Daten in der Reihenfolge der Ränge der Prozesse in der Gruppe abgelegt; dh. zuerst die von Prozeß 0, dann von Prozeß 1 usw. Der Programmierer ist selbst dafür verantwortlich, daß ein Puffer von ausreichender Größe vorhanden ist.
Aufruf:
#include "mpi.h"
#define ROOT 0
int numprocs, myid, bufsize;
int *sendbuf, *recvbuf;
...
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
...
... sendbuf allocieren, belegen ...
... bufsize belegen ...
if (myid==ROOT) {
...
recvbuf=malloc(bufsize*sizeof(int));
}
MPI_Gather(sendbuf, bufsize, MPI_INT, recvbuf, bufsize,
MPI_INT, ROOT, MPI_COMM_WORLD);
...
Beispiel