mpiexec usando o número errado de CPUs
-
28-09-2019 - |
Pergunta
Estou tentando configurar um cluster MPI. Mas tenho o problema de que o número de CPUs adicionado ao arquivo mpd.conf não é usado corretamente. Eu tenho três servidores Ubuntu. Opteron com 48 núcleos calc1 com 8 núcleos calc2 com 8 núcleos.
Meu mpd.hosts parece:
opteron:46
calc1:6
calc2:6
Após a inicialização (mpdboot -n 3 -f mpd.hosts), o sistema está em execução. MPDTRACE -> Todos os três estão listados.
Mas a execução de um programa como "Mpiexec -n 58 Raxmlhpc -mpi ..." causa que o Calc1 e o Calc2 chegam a muitos empregos e Opteron chega a poucos ao mesmo tempo. O que estou fazendo errado?
Cumprimentos
BJOERN
Solução
Eu encontrei uma solução alternativa. Usei o parâmetro adicional "-Machinefile /path/to/mpd.hosts" para o comando mpiexec. E agora, todos os nós estão funcionando corretamente. Um problema que tive foi que recebi a seguinte mensagem de erro:
... mpiu_shmw_seg_create_attach_templ (671): Falha aberta - nenhum arquivo ou diretório ...
Para consertar, tive que definir a variável de ambiente MPICH_NO_LOCAL=1
Outras dicas
Como você descobriu, você deve passar o arquivo de máquina para ambos mpdboot
e mpiexec
Para usar a contagem de processos por host. O problema "Open Falha" é um bug conhecido no MPD, o gerenciador de processos que você está usando. Observe que o MPICH_NO_LOCAL=1
A solução alternativa funcionará, mas provavelmente resultará em uma grande penalidade de desempenho pela comunicação intranode.
Você está claramente usando o MPICH2 (ou um derivado MPICH2), mas não está claro qual versão você está usando. Se você puder, recomendo fortemente a atualização para o MPICH2 1.2.1p1 ou (melhor ainda) 1.3.1. Ambos os lançamentos incluem um gerente de processo mais recente chamado hidra Isso é muito mais rápido e mais robusto. Em 1.3.1, o Hydra é o gerenciador de processos padrão. Não requer um mpdboot
fase, e suporta um $HYDRA_HOST_FILE
variável de ambiente para que você não precise especificar o arquivo da máquina em cada mpiexec
.