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 OpenMPFase de MPI:
el rango 0 llega a la barrera y todos los rangos usan un procesador cada unoHasta 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.