打开在集群上运行 mpi 程序



>我在集群上运行 mpi 程序时遇到问题。

我的主机文件如下所示:

10.0.9.1 slots=2
10.0.12.1 slots=2
10.0.11.1 slots=2
10.0.10.1 slots=2
10.0.6.1 slots=2
10.0.5.1 slots=2
10.0.4.1 slots=2
10.0.2.1 slots=2
10.0.1.1 slots=2

如您所见,我有 8 个节点。运行后,某些进程结束工作,但其他返回错误:

node02][[62903,1],7][btl_tcp_endpoint.c:796:mca_btl_tcp_endpoint_complete_connect] connect() to 10.1.4.1 failed: No route to host (113)
[node04][[62903,1],15][btl_tcp_endpoint.c:796:mca_btl_tcp_endpoint_complete_connect] connect() to 10.1.5.1 failed: No route to host (113)

我很惊讶 node02 正在尝试与 10.1.4.1 主机连接(我在主机等中没有这个地址(。第二个错误与前一个错误类似,这意味着节点 4 正在尝试与 10.1.5.1 连接。我的adres是10.0.x.1而不是10.1.x.1,为什么会这样,我在哪里可以找到它?

modprobe: ERROR: could not insert 'ip_tables': Operation not permitted
iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

编辑:

我已经测试了许多配置,我发现我只能使用任何节点运行 10 个程序副本 (-np 10(。任何更大的值(例如 -np 12(都会得到上面提到的错误。

例如,节点的配置是可以的:

10.0.11.1 slots=1
10.0.10.1 slots=1
10.0.9.1 slots=1
10.0.6.1 slots=2
10.0.5.1 slots=1
10.0.4.1 slots=2
10.0.2.1 slots=2

你有没有遇到过这样的问题?

在 Open MPI 中,主机文件中的 IP 在内部用于启动作业。如果未在受支持的资源管理器下运行,则plm/rsh组件将使用这些 IP 在远程节点上ssh(或rsh(orted守护程序。

对于通信,btl/tcp组件将检测所有可用接口并尝试使用它们。

在您的情况下,您可能必须将10.1.0.0/16网络列入黑名单,或限制为10.0.0.0/16网络。这可以通过命令行实现:

mpirun --mca btl_tcp_if_exclude 10.1.0.0/16 ...

mpirun --mca btl_tcp_if_include 10.0.0.0/16 ...

请注意,您可能还必须描述用于连接作业的oob/tcp组件。与btl/tcp不同,此组件使用第一个工作IP,因此可能不需要。

mpirun --mca btl_tcp_if_inlclude 10.0.0.0/16 --mca oob_tcp_if_include 10.0.0.0/16 ...

最新更新