您好:我刚刚为我设置了一个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();
}
我观察到的是当我在“机器文件”中拥有三个不同节点的主机名时,作业挂起。每个单独的节点都运行正常 - 我也尝试过两个节点的组合(即三个节点中的任意两个),并且它可以正常工作。所以,我可以忽略任何节点不工作的可能性。
我该如何进一步调查?谢谢!
答案 0 :(得分:0)
printf或文件IO在这里无关紧要。
我刚刚在Open MPI自述文件中添加了一个关于此的部分,请查看https://svn.open-mpi.org/trac/ompi/browser/branches/v1.5/README#L1404。简短版本:尝试mpirun'ing一些非MPI应用程序,如主机名或正常运行时间。如果那些不起作用,那么就会阻止OMPI的运行时环境正常启动(这是我怀疑这里发生的事情)。
(如果您害怕获得SSL警告,请获取该网站的CA SSL证书:http://www.cs.indiana.edu/Facilities/FAQ/Mail/csci.crt。这是来自美国印第安纳大学计算机科学系的CA;他们是我们的托管服务提供商)< / p>
您是否已禁用防火墙?或者,如果你是偏执狂,启用了防火墙,但是在运行Open MPI作业的所有节点之间启用了随机TCP端口通信? (iptables配置正确很棘手 - 您可能希望首先尝试禁用它,如果可行,那么尝试弄清楚如何允许可信节点之间的随机TCP端口通信)
答案 1 :(得分:0)
我想出(有时候回来)我的机器文件中没有插槽,而且我运行的作业多于节点数(4个作业,3个节点)。这就是原因。对不起,这太傻了。