Итак, у меня есть другой настольный компьютер, который служит моим сервером, primesystem
и ноутбук в качестве моего клиента, zerosystem
что с этим связано. Они оба служат мне ssh-server
и ssh-client
соответственно, и подключается через Ethernet-кабель (не перекрестный).
Я оба следовал инструкциям, изложенным в этих уроках: Запуск кластера MPI в локальной сети и Настройка кластера MPICH2 в Ubuntu, только то, что я хотел бы использовать реализацию MPI python
, поэтому я вместо этого использовал mpi4py
чтобы проверить, могут ли оба ПК использовать MPI.
Я создал каталог /cloud
в primesystem
который будет использоваться в моей сети, и он установлен в моем zerosystem
, как указано в первом руководстве (так что я мог также работать в обеих системах без необходимости входить в систему через ssh
).
На сервере или primesystem
, если я запустил образец скрипта helloworld, он будет работать нормально:
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.
То же самое, если я пропущу его через хост zerosystem
(но следует отметить заметную задержку выполнения из-за использования внешнего процессора из 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.
Но если я использовал два хоста, похоже, он вообще не отвечает:
one@primesystem:/cloud$ mpirun -np 5 -hosts primesystem,zerosystem python -m mpi4py helloworld
Hello, World! I am process 0 of 5 on primesystem.
(Если я поменял местами порядок хостов, zerosystem
будучи первым, ответ Hello World не отображается)
Я пробовал вводить списки хостов в .mpi-config
файл и соответствующие процессы для создания, затем с помощью -f
параметр вместо -hosts
zerosystem:4
primesystem:2
но он по-прежнему получает тот же ответ, и через несколько секунд или минут это вывод ошибки:
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
Почему это? Любые идеи?