1

您好:我只是为我设置了一个 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();
}

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

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

4

2 回答 2

0

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

于 2012-03-22T03:36:00.900 回答
0

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 端口通信)

于 2012-03-01T18:28:19.097 回答