OpenMP- und MPI-Hybridprogramm

Ich habe eine Maschine mit 8 Prozessoren. Ich möchte mit OpenMP und MPI auf meinem Code wie folgt abwechseln:

OpenMP-Phase:

Die Ränge 1-7 warten auf einen MPI_BarrierRang 0 verwendet alle 8 Prozessoren mit OpenMP

MPI-Phase:

Rang 0 erreicht die Barriere und alle Ränge verwenden jeweils einen Prozessor

Bisher habe ich getan:

Stellen Sie I_MPI_WAIT_MODE 1 so ein, dass die Ränge 1-7 die CPU nicht belegen, während Sie sich auf der Barriere befinden.Setzen Sie omp_set_num_threads (8) auf Rang 0, damit 8 OpenMP-Threads gestartet werden.

Es hat alles geklappt. Rang 0 hat 8 Threads gestartet, aber alle sind auf einen Prozessor beschränkt. In der OpenMP-Phase werden 8 Threads von Rang 0 auf einem Prozessor ausgeführt, und alle anderen Prozessoren sind inaktiv.

Wie teile ich MPI mit, dass Rang 0 die anderen Prozessoren verwenden darf? Ich verwende Intel MPI, könnte aber bei Bedarf auf OpenMPI oder MPICH umsteigen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage