Ich entwickle derzeit ein Hybrid-Programm mit C++. Ich benutze sowohl openMP als auch MPI. Ich weiß jedoch nicht, wie ich die Anzahl der Prozessoren und Threads für meinen Job festlegen soll. Nehmen wir an, ich möchte 5 Knoten verwenden und ich möchte einen MPI-Prozessor auf jedem Knoten und ich möchte 24 Threads pro Knoten.Lokalisierressource für OpenMP + MPI-Anwendung
Dies ist, wie ich my_job
einreichen jetzt:
qsub -l select=5:ncpus=24:mpiprocs=5 -l place=scatter:exclhost my_job
und auf my_job
Skript, ich bin dies
#PBS -l select=5:ncpus=24:mpiprocs=5
export OMP_NUM_THREADS=24
mpic++ -O3 myprogram.cpp -o out -fopenmp -lquadmath -std=gnu++11
mpirun -n 5 ./out
jedoch tue, ist die Leistung sehr langsam, was ich denke, dass Es könnte ein Problem damit geben, wie ich meine Ressourcen finde.
Irgendwelche Vorschläge?
Dank Gilles, ich denke, das könnte das Problem lösen. Ich werde es jetzt versuchen und sehen, ob es einen Unterschied in der Leistung gibt. Schätze deine Hilfe. – emadalamoudi
Das ist etwas fehlt neben ich vergesse die Anzahl der Prozessor pro Knoten beim Ausführen des Auftrags angeben: mpirun -n 5 -ppn 1 ./out – emadalamoudi
welche MPI-Bibliothek verwenden Sie? Wenn dies Open MPI ist und es mit tm-Unterstützung erstellt wurde, sollte das überhaupt nicht benötigt werden. –