>我在集群上运行 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 ...