MPI 作业仅挂在一个特定节点上

MPI 作业仅挂在一个特定节点上

首先我要声明,我不再是系统管理员了——我是一名科学家,但我正在努力帮助我们的系统管理员。因此,我无法立即尝试需要更改硬件或需要 sudo 的操作,但我会尽我所能提供尽可能多的信息。

我正在尝试使用 MPI 在 8 个节点上运行程序 foo,该程序用 Fortran 编写,并用 PGI 和 MPICH 编译(节点名为 node01、node02 等)。每个节点都有 8 个核心,我试图使用所有核心。问题是 node08 与其他核心配合得不好,我不太清楚原因。为了解决简单问题 - ssh、文件传输等在 node08 和所有其他节点之间运行良好,我已在所有节点之间设置了无密码 ssh(并且在 node08 上运行良好),mpi 可执行文件相同,使用所有其他节点时一切正常(这也不是核心数量的问题 - 在 node06 和 node07 之间运行 16 个核心,运行良好,在 node07 和 node08 之间运行相同数量的核心,就会失败)。

下面是我运行作业的方式(我尝试使用 mpiexec 进行同样的操作),我将展示每个作业的 MPI 输出示例。mpich 版本为 1.4.1,在机器之间一致。此外,这两个作业都是从 node07 运行的,只是 machs 文件更改为包含 node06 或 node08。

mpiexec.hydra -iface eth1 -verbose -machinefile machs -np 16 ./executable

当我在 node07 和 node08 上运行此命令时,在它挂起之前立即收到以下 MPI 输出(需要明确的是,它在两个节点的所有核心上都以 100% CPU 挂起;另外,我还阻止了 ip 地址和 kvsname):

[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xx14_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 7 pid 5: cmd=get_result rc=0 msg=success value=description#""$port#38204$ifname#xx.xx.xx.7$
[proxy:0:1@node08] got pmi command (from 5): get
kvsname=kvs_xx14_0 key=P0-businesscard
[proxy:0:1@node08] forwarding command (cmd=get kvsname=kvs_xx14_0 key=P0-businesscard) upstream
[proxy:0:1@node08] got pmi command (from 7): get
kvsname=kvs_xx14_0 key=P0-businesscard
[proxy:0:1@node08] forwarding command (cmd=get kvsname=kvs_xx14_0 key=P0-businesscard) upstream
[proxy:0:1@node08] got pmi command (from 10): get
kvsname=kvs_xx14_0 key=P0-businesscard
[proxy:0:1@node08] forwarding command (cmd=get kvsname=kvs_xx14_0 key=P0-businesscard) upstream
[proxy:0:1@node08] got pmi command (from 16): get
kvsname=kvs_xx14_0 key=P0-businesscard
[proxy:0:1@node08] forwarding command (cmd=get kvsname=kvs_xx14_0 key=P0-businesscard) upstream
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xx14_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 7 pid 7: cmd=get_result rc=0 msg=success value=description#""$port#38204$ifname#xx.xx.xx.7$
[proxy:0:1@node08] we don't understand the response get_result; forwarding downstream
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xx14_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 7 pid 10: cmd=get_result rc=0 msg=success value=description#""$port#38204$ifname#xx.xx.xx.7$
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xx14_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 7 pid 16: cmd=get_result rc=0 msg=success value=description#""$port#38204$ifname#xx.xx.xx.7$
[proxy:0:1@node08] we don't understand the response get_result; forwarding downstream
[proxy:0:1@node08] we don't understand the response get_result; forwarding downstream
[proxy:0:1@node08] we don't understand the response get_result; forwarding downstream

当在 node06 和 node07 上运行相同的命令时,我得到了这个前一个命令挂起的结果。

[proxy:0:1@node07] got pmi command (from 22): get
kvsname=kvs_xxx00_0 key=P0-businesscard
[proxy:0:1@node07] forwarding command (cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard) upstream
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 6 pid 22: cmd=get_result rc=0 msg=success value=description#""$port#48883$ifname#xxx.xx.xx.6$
[proxy:0:1@node07] got pmi command (from 6): get
kvsname=kvs_xxx00_0 key=P0-businesscard
[proxy:0:1@node07] forwarding command (cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard) upstream
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 6 pid 6: cmd=get_result rc=0 msg=success value=description#""$port#48883$ifname#xxx.xx.xx.6$
[proxy:0:1@node07] we don't understand the response get_result; forwarding downstream
[proxy:0:1@node07] got pmi command (from 11): get
kvsname=kvs_xxx00_0 key=P0-businesscard
[proxy:0:1@node07] forwarding command (cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard) upstream
[proxy:0:1@node07] got pmi command (from 16): get
kvsname=kvs_xxx00_0 key=P0-businesscard
[proxy:0:1@node07] forwarding command (cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard) upstream
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 6 pid 11: cmd=get_result rc=0 msg=success value=description#""$port#48883$ifname#xxx.xx.xx.6$
[proxy:0:1@node07] we don't understand the response get_result; forwarding downstream
[mpiexec@node07] [pgid: 0] got PMI command: cmd=get kvsname=kvs_xxx00_0 key=P0-businesscard
[mpiexec@node07] PMI response to fd 6 pid 16: cmd=get_result rc=0 msg=success value=description#""$port#48883$ifname#xxx.xx.xx.6$
[proxy:0:1@node07] we don't understand the response get_result; forwarding downstream
[proxy:0:1@node07] we don't understand the response get_result; forwarding downstream

需要明确的是,此代码在我们拥有的所有其他机器上运行良好,并且我们尝试过的任何其他部署都没有这个问题,只有这个。另外,我应该注意,节点具有与其节点号相对应的 IP,因此 xx.xx.xx.7 是 node07,xx.xx.xx.8 是 node08,等等。运行于只是所有 8 个核心上的 node08 都运行良好,当将 node08 上的任何核心与任何其他机器上的任何核心一起使用时就会出现问题。

编辑以添加:ssh 是启动器(也是我们唯一可以访问的启动器)。

相关内容