Funktionsübersicht . . Kollektive Operationen

Hilfesystem für den Message Passing Interface Standard MPI


MPI_Bcast

Sendet eine Nachricht vom Prozeß 'root' an alle anderen Prozesse des angegebenen Kommunikators

Syntax:

In/Out Parameter WICHTIG Anmerkung:

Sofern nicht die darunterliegende Schicht ('device') einen Broadcast bereits implementiert hat, verwendet MPI einen baumartigen Algorithmus um die Nachricht zu Blöcken von Prozessen zu schicken. Mit einem linearen Algorithmus wird sie dann vom ersten Prozeß des Blocks an alle anderen verteilt. MPIR_BCAST_BLOCK_SIZE bestimmt die Größe dieser Prozeßblöcke. MPIR_BCAST_BLOCK_SIZE = 1 bedeutet: es wird ein reiner Baum-Algorithmus verwendet.
MPIR_BCAST_BLOCK_SIZE <= Größe der Prozeßgruppe von comm bedeutet: es wird ein rein linearer Algorithmus verwendet.
Dieser Wert sollte eingestellt werden, um die höchstmögliche Effizienz auf verschieden Rechnern zu erzielen.

Aufruf:

#include "mpi.h"
#define ROOT 0

    int    myid, *buffer, bufsize;

    ...
    MPI_Comm_rank(MPI_COMM_WORLD, &myid);
    if (myid==ROOT) {
        ... Daten holen/erzeugen ...
        MPI_Bcast(buffer, bufsize, MPI_INT, ROOT, MPI_COMM_WORLD);
        ...
    }
    else {
        ...
        buffer=malloc(bufsize * sizeof( int));
        MPI_Bcast(buffer, bufsize, MPI_INT, ROOT, MPI_COMM_WORLD);
        ...
    }
    ...

Beispiel