Estou paralelizando código para resolver numericamente um modelo de equilíbrio populacional em 5 dimensões. Atualmente, tenho um código paralelo MPICH2 muito bom no FORTRAN, mas à medida que aumentamos os valores dos parâmetros, as matrizes ficam muito grandes para serem executadas no modo de memória distribuída.
Eu tenho acesso a um cluster com 15 nós, onde cada nó tem duas CPUs de 8 núcleos e 128 GB de RAM. Eu quero escrever executar um programa com MPI-3.0 no modo de memória compartilhada para que cada processo não gere sua própria cópia de cada matriz.
Antes de poder executar qualquer coisa no cluster, tenho que testá-lo em uma área de trabalho executando o Ubuntu. É essencialmente um blade do cluster, pois possui duas CPUs de 8 núcleos e 128 GB de RAM. Escreverei e testarei meu código nele, portanto, direcione suas respostas para a execução de programas no computador Ubuntu.
Eu li que existe uma maneira de executar o MPI-3.0 no modo de memória compartilhada, como o OpenMP, em vez do modo de memória distribuída padrão.
Questões:
Como terei que alterar meu código? Preciso adicionar chamadas para outras funções MPI como
MPI_WIN_ALLOCATE
?Como compilar meu código para executar o MPI-3.0 no modo de memória compartilhada? Isso será diferente se for sobre vários nós?
Por favor, dê exemplos de scripts de compilação, se puder. Eu também tenho apenas compiladores GNU. O cluster que eu uso não suporta compiladores Intel.
mpiexec -n 8 /path/to/application
para falsificar seu computador, pensando que ele possui 8 nós diferentes.