Ich parallelisiere Code, um ein 5-dimensionales Populationsbilanzmodell numerisch zu lösen. Momentan habe ich in FORTRAN einen sehr guten MPICH2-parallelisierten Code, aber wenn wir die Parameterwerte erhöhen, werden die Arrays zu groß, um im verteilten Speichermodus ausgeführt zu werden.
Ich habe Zugriff auf einen Cluster mit 15 Knoten, wobei jeder Knoten über zwei 8-Kern-CPUs und 128 GB RAM verfügt. Ich möchte ein Programm mit MPI-3.0 im Shared Memory-Modus schreiben, damit nicht jeder Prozess eine eigene Kopie jedes Arrays erzeugt.
Bevor ich etwas auf dem Cluster ausführen kann, muss ich es auf einem Desktop mit Ubuntu testen. Es ist im Wesentlichen ein Blade des Clusters, da es über zwei 8-Kern-CPUs und 128 GB RAM verfügt. Ich werde meinen Code darauf schreiben und testen. Bitte richten Sie Ihre Antworten darauf aus, dass Programme auf dem Ubuntu-Computer ausgeführt werden.
Ich habe gelesen, dass es eine Möglichkeit gibt, MPI-3.0 im Shared-Memory-Modus wie OpenMP anstelle des Standard-Distributed-Memory-Modus auszuführen.
Fragen:
Wie muss ich meinen Code ändern? Muss ich Anrufe in andere MPI-Funktionen wie hinzufügen
MPI_WIN_ALLOCATE
?Wie kompiliere ich meinen Code, um MPI-3.0 im Shared Memory-Modus auszuführen? Wird dies anders sein, wenn es sich um mehrere Knoten handelt?
Bitte geben Sie Beispiele für Kompilierungsskripte, wenn Sie können. Ich habe auch nur GNU-Compiler. Der von mir verwendete Cluster unterstützt keine Intel-Compiler.
mpiexec -n 8 /path/to/application
, um Ihren Computer so zu fälschen, dass er 8 verschiedene Knoten hat.