Estoy paralelizando el código para resolver numéricamente un modelo de equilibrio de población de 5 dimensiones. Actualmente tengo un muy buen código paralelo MPICH2 en FORTRAN, pero a medida que aumentamos los valores de los parámetros, las matrices se vuelven demasiado grandes para ejecutarse en modo de memoria distribuida.
Tengo acceso a un clúster con 15 nodos, donde cada nodo tiene dos CPU de 8 núcleos y 128 GB de RAM. Quiero escribir ejecutar un programa con MPI-3.0 en modo de memoria compartida para que cada proceso no genere su propia copia de cada matriz.
Antes de poder ejecutar algo en el clúster, tengo que probarlo en un escritorio con Ubuntu. Es esencialmente una cuchilla del clúster, ya que tiene dos CPU de 8 núcleos y 128 GB de RAM. Escribiré y probaré mi código en él, así que por favor orienta tus respuestas para ejecutar programas en la computadora Ubuntu.
He leído que hay una manera de ejecutar MPI-3.0 en modo de memoria compartida como OpenMP en lugar de su modo de memoria distribuida predeterminada.
Preguntas:
¿Cómo tendré que alterar mi código? ¿Necesito agregar llamadas a otras funciones MPI como
MPI_WIN_ALLOCATE
?¿Cómo compilo mi código para ejecutar MPI-3.0 en modo de memoria compartida? ¿Será diferente si se trata de varios nodos?
Proporcione scripts de compilación de muestra si puede. También tengo solo compiladores GNU. El clúster que uso no es compatible con los compiladores Intel.
mpiexec -n 8 /path/to/application
para hacer que su computadora piense que tiene 8 nodos diferentes.