Funktionsübersicht . . Kollektive Operationen

Hilfesystem für den Message Passing Interface Standard MPI


MPI_Scatter

Verteilt Daten vom Prozeß 'root' unter alle anderen Prozesse in der Gruppe, so daß, soweit es aufgeht, alle Prozesse gleichgroße Anteile erhalten

Syntax:

Input Parameter: Output Parameter: Anmerkung:

Der Sendepuffer (seine Größe sei n Elemente) wird in Teile der Länge n / Gruppengröße geteilt und mit Prozeß 0 beginnend verteilt. Sollte die Division nicht aufgehen, erhalten die ersten Prozesse um 1 größere Teile und der Prozeß mit der höchsten ID den Rest.

Aufruf:


#include "mpi.h"
#define ROOT 0

     int myid, bufsize;
     int *sendbuf, *recvbuf;

     if (myid==ROOT) {
        ...
        ... sendbuf holen / belegen ...
        bufsize= 'berechnen, wieviele Daten jeder bekommt'
     }
     MPI_Bcast(&bufsize, 1, MPI_INT, ROOT, MPI_COMM_WORLD);
     recvbuf=malloc(bufsize*sizeof(int));
     MPI_Scatter(sendbuf, bufsize, MPI_INT, recvbuf, bufsize,
		 MPI_INT, ROOT, MPI_COMM_WORLD);
     ...

Beispiel