在集群上运行mpi程序

时间:2018-04-18 10:56:12

标签: mpi openmpi

我在群集上运行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主机连接(我在主机中没有这个地址等等)。 第二个错误与之前的意思是node4试图与10.1.5.1连接。我的地址是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

你遇到过这样的问题吗?

1 个答案:

答案 0 :(得分:0)

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

对于通信,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 ...