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 OpenMPMPI-Phase:
Rang 0 erreicht die Barriere und alle Ränge verwenden jeweils einen ProzessorBisher 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.