Então eu tenho este outro PC desktop, que serve como meu servidor, primesystem
e um laptop como meu cliente, zerosystem
que está conectado a ele. Ambos servem como ssh-server
e ssh-client
, respectivamente, e são conectados por meio de um cabo Ethernet (não cruzado).
Eu segui as instruções descritas nestes tutoriais:
Executando um cluster MPI dentro de uma LAN e Configurando um cluster MPICH2 no Ubuntu , apenas que eu gostaria de usar a implementação MPI de python
, então eu usei mpi4py
para testar se ambos os computadores podem utilizar o MPI.
Eu configurei um diretório /cloud
em primesystem
que deve ser compartilhado na minha rede, e isso é montado no meu zerosystem
, conforme instruído pelo primeiro tutorial (para que eu possa trabalhar em ambos os sistemas sem a necessidade de fazer o login através de ssh
).
No servidor ou primesystem
, se eu executar o script helloworld, ele funciona bem:
one@primesystem:/cloud$ mpirun -np 5 -hosts primesystem python -m mpi4py helloworld
Hello, World! I am process 0 of 5 on primesystem.
Hello, World! I am process 1 of 5 on primesystem.
Hello, World! I am process 2 of 5 on primesystem.
Hello, World! I am process 3 of 5 on primesystem.
Hello, World! I am process 4 of 5 on primesystem.
O mesmo acontece se eu executar o host zerosystem
(mas deve-se notar que há um atraso considerável na execução devido à utilização de CPU externa de zerosystem
):
one@primesystem:/cloud$ mpirun -np 5 -hosts zerosystem python -m mpi4py helloworld
Hello, World! I am process 0 of 5 on zerosystem.
Hello, World! I am process 1 of 5 on zerosystem.
Hello, World! I am process 2 of 5 on zerosystem.
Hello, World! I am process 3 of 5 on zerosystem.
Hello, World! I am process 4 of 5 on zerosystem.
Mas se eu utilizei os dois hosts, parece não responder:
one@primesystem:/cloud$ mpirun -np 5 -hosts primesystem,zerosystem python -m mpi4py helloworld
Hello, World! I am process 0 of 5 on primesystem.
(Se eu troquei a ordem dos hosts, zerosystem
sendo o primeiro, nenhuma resposta Hello World é mostrada)
Eu tentei inserir as listas de hosts em um arquivo .mpi-config
e seus respectivos processos para gerar, usando o parâmetro -f
em vez de -hosts
zerosystem:4
primesystem:2
mas ainda recebe a mesma resposta, e após alguns segundos ou minutos, esta é a saída de erro:
one@primesystem:/cloud$ mpirun -np 6 -f .mpi-config python -m mpi4py helloworld
===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 23329 RUNNING AT primesystem
= EXIT CODE: 139
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
[proxy:0:1@zerosystem] HYD_pmcd_pmip_control_cmd_cb (pm/pmiserv/pmip_cb.c:886): assert (!closed) failed
[proxy:0:1@zerosystem] HYDT_dmxu_poll_wait_for_event (tools/demux/demux_poll.c:76): callback returned error status
[proxy:0:1@zerosystem] main (pm/pmiserv/pmip.c:206): demux engine error waiting for event
[mpiexec@primesystem] HYDT_bscu_wait_for_completion (tools/bootstrap/utils/bscu_wait.c:76): one of the processes terminated badly; aborting
[mpiexec@primesystem] HYDT_bsci_wait_for_completion (tools/bootstrap/src/bsci_wait.c:23): launcher returned error waiting for completion
[mpiexec@primesystem] HYD_pmci_wait_for_completion (pm/pmiserv/pmiserv_pmci.c:218): launcher returned error waiting for completion
[mpiexec@primesystem] main (ui/mpich/mpiexec.c:336): process manager error waiting for completion
Por que isso? Alguma idéia?