当通过 LAN 建立 MPI 集群中使用两台主机时,mpiexec 将不会运行 mpi4py 脚本

当通过 LAN 建立 MPI 集群中使用两台主机时,mpiexec 将不会运行 mpi4py 脚本

因此,我有另一台台式电脑作为服务器,primesystem还有一台笔记本电脑作为客户端,zerosystem与它相连。它们分别作为我的ssh-serverssh-client,并通过以太网(非交叉)电缆连接。

我都遵循了这些教程中所述的说明: 在 LAN 内运行 MPI 集群在 Ubuntu 中设置 MPICH2 集群,只是我想使用 的 MPI 实现python,所以我用它来mpi4py测试两台 PC 是否都可以使用 MPI。

我设置了一个目录/cloudprimesystem该目录将在我的网络中共享,并且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(但需要注意的是,由于使用外部 CPU,执行过程中会出现明显的延迟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

这是为什么?有什么想法吗?

相关内容