Okay, geben wir ein Beispiel für die Verwendung von MPI -Sendung in einer parallelen Computeranwendung an. Ich werde ein relativ einfaches Szenario auswählen:Verteilung der Anfangsbedingungen für eine numerische Simulation auf alle Prozesse.
Szenario:
Stellen Sie sich vor, wir führen eine parallele Simulation (z. B. Modellierung des Bevölkerungswachstums). Wir haben einen globalen Parameter `initial_population`, der durch * jeden * Prozess im MPI -Kommunikator bekannt sein muss. Nur der Stammprozess (Prozess mit Rang 0) kennt diesen Wert zunächst. Wir werden `mpi_bcast` verwenden, um` initial_population` auf alle Prozesse zu verteilen.
Code -Beispiel (C ++)
`` `C ++
#include
#include
int main (int argc, char ** argv) {
Int Rang, Größe;
double initial_population; // Globaler Parameter
Mpi_init (&argc, &argv);
Mpi_comm_rank (mpi_comm_world &rank);
MPI_COMM_SIZE (MPI_COMM_WORLD, &Größe);
// Initialisieren Sie initial_population nur im Stammprozess
if (rank ==0) {
initial_population =1000.0; // Beispielinstitiver Wert
std ::cout <<"Prozess 0:initial population =" <
} anders {
initial_population =0,0; // andere Prozesse initialisieren auf einen Standardwert (spielt keine Rolle)
}
// Senden Sie die anfängliche Bevölkerung von Prozess 0 auf alle Prozesse.
Mpi_bcast (&initial_population, 1, mpi_double, 0, mpi_comm_world);
// Jetzt haben alle Prozesse den korrekten Wert der initial_population.
// Simulationsberechnungen mit den verteilten Daten durchführen
// Beispiel:
Double Growth_rate =0,05; // 5% Wachstumsrate
double Final_population =initial_population * (1.0 + wachstum_rate);
std ::cout <<"prozess" <