Scenario:
Immagina di gestire una simulazione parallela (ad es. Modellazione della crescita della popolazione). Abbiamo un parametro globale `iniziale_population` che deve essere conosciuto da * ogni * processo nel comunicatore MPI. Solo il processo di root (processo con il grado 0) conosce inizialmente questo valore. Useremo `mpi_bcast` per distribuire` iniziale_population` a tutti i processi.
Esempio di codice (C ++)
`` `C ++
#include
#include
int main (int argc, char ** argv) {
Int Rank, dimensioni;
doppio iniziale_population; // parametro globale
Mpi_init (&argc, &argv);
Mpi_comm_rank (mpi_comm_world, &rank);
Mpi_comm_size (mpi_comm_world, &size);
// Inizializza Initial_Population solo sul processo di root
if (rank ==0) {
iniziale_population =1000.0; // Esempio Valore iniziale
std ::cout <<"processo 0:popolazione iniziale =" <
iniziale_population =0.0; // Altri processi inizializzano su un valore predefinito (non importa)
}
// trasmette la popolazione iniziale dal processo 0 a tutti i processi.
Mpi_bcast (&iniziali_population, 1, mpi_double, 0, mpi_comm_world);
// Ora, tutti i processi hanno il valore corretto di iniziale_population.
// Esegui calcoli di simulazione utilizzando i dati distribuiti
// Esempio:
doppia crescita_rate =0,05; // tasso di crescita del 5%
Double Final_Population =Inizial_Population * (1.0 + Growth_rate);
std ::cout <<"processo" <Informazioni correlate
software © www.354353.com