【问题标题】:OpenMPI hangs with three nodesOpenMPI 挂起三个节点
【发布时间】:2012-03-19 04:26:22
【问题描述】:

您好:我只是为我设置了一个 OpenMPI 环境,其中我设置了三个使用无密码身份验证的虚拟机等。我成功编译/链接了一个简单的“Hello World”风格的程序:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char *argv[]) {
  int numprocs, rank, namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME];

  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Get_processor_name(processor_name, &namelen);

  printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);

  MPI_Finalize();
}

我观察到当我在“机器文件”中有三个不同节点的主机名时,作业挂起。每个单独的节点都运行良好 - 我也尝试了两个节点的组合(即三个节点中的任何两个),它工作正常。所以,我可以排除任何节点不工作的可能性。

我怎样才能对此进行更多调查?谢谢!

【问题讨论】:

  • 编写死锁的并行程序非常容易。在您发布一些代码或其他证据之前,我相信这就是您所做的。尤其是当您编写“倾向于挂起”时,这会增加有时它不会挂起的可能性——程序的经典行为不是无死锁。
  • 谢谢,我已经添加了代码。我已经删除了“倾向于”。它总是挂起。
  • 如果您删除printf 命令并写入例如一个文件,而不是? (文件应特定于每个进程)

标签: c parallel-processing openmpi


【解决方案1】:

我发现(有时回来)我的机器文件中没有插槽,并且我运行的作业多于节点数量(4 个作业,3 个节点)。所以这就是原因。对不起,那太傻了。

【讨论】:

    【解决方案2】:

    printf 或文件 IO 在这里无关紧要。

    我刚刚在 Open MPI README 中添加了一个关于此的部分,请查看 https://svn.open-mpi.org/trac/ompi/browser/branches/v1.5/README#L1404。简短版本:首先尝试运行一些非 MPI 应用程序,例如主机名或正常运行时间。如果这些都不起作用,那么有一些东西会阻止 OMPI 的运行时环境甚至无法正常启动(我怀疑这就是这里发生的事情)。

    (如果您害怕收到 SSL 警告,请获取该网站的 CA SSL 证书:http://www.cs.indiana.edu/Facilities/FAQ/Mail/csci.crt。这是来自美国印第安纳大学计算机科学系的 CA;他们是我们的托管服务提供商)

    您是否禁用了防火墙?或者,如果您偏执,请启用防火墙,但启用将运行 Open MPI 作业的所有节点之间的随机 TCP 端口通信? (iptables 很难正确配置——您可能想先尝试禁用它,如果可行,然后尝试弄清楚如何允许受信任节点之间的随机 TCP 端口通信)

    【讨论】:

    • 感谢杰夫的回答。看起来这是我的一个相当愚蠢的错误(在下面回答)。
    猜你喜欢
    • 1970-01-01
    • 2011-10-18
    • 2015-01-19
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2010-09-25
    • 2014-05-20
    • 2020-08-18
    相关资源
    最近更新 更多