Programa híbrido OpenMP y MPI

Tengo una máquina con 8 procesadores. Quiero alternar usando OpenMP y MPI en mi código como este:

Fase de OpenMP:

rangos 1-7 espera en un MPI_BarrierEl rango 0 usa los 8 procesadores con OpenMP

Fase de MPI:

el rango 0 llega a la barrera y todos los rangos usan un procesador cada uno

Hasta ahora, he hecho:

establezca I_MPI_WAIT_MODE 1 para que los rangos 1-7 no utilicen la CPU mientras están en la barrera.establezca omp_set_num_threads (8) en el rango 0 para que inicie 8 subprocesos OpenMP.

Todo funcionó. El rango 0 lanzó 8 subprocesos, pero todos se limitan a un procesador. En la fase OpenMP obtengo 8 subprocesos de rango 0 que se ejecutan en un procesador y todos los demás procesadores están inactivos.

¿Cómo le digo a MPI que permita que el rango 0 use los otros procesadores? Estoy usando Intel MPI, pero puedo cambiar a OpenMPI o MPICH si es necesario.

Respuestas a la pregunta(2)

Su respuesta a la pregunta