MPI#U屏障不';我不能在Ubuntu中正常工作

MPI#U屏障不';我不能在Ubuntu中正常工作,mpi,Mpi,我是使用MPI的初学者。在这里,我编写了一个非常简单的程序来测试MPI是否可以运行。这是我的你好 #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); MP

我是使用MPI的初学者。在这里,我编写了一个非常简单的程序来测试MPI是否可以运行。这是我的你好

#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);
  MPI_Barrier(MPI_COMM_WORLD);
  printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);

  MPI_Finalize();
}
#包括
#包括
int main(int argc,char*argv[]){
国际货币、等级、名称;
字符处理器名称[最大处理器名称];
MPI_Init(&argc,&argv);
MPI通信大小(MPI通信世界和numprocs);
MPI通信等级(MPI通信世界和等级);
MPI获取处理器名称(处理器名称和名称);
MPI_屏障(MPI_通信世界);
printf(“进程%d在%s上,共%d\n”,级别,处理器名称,numprocs);
MPI_Finalize();
}
我用节点来测试,主机文件是:node1 node2

所以我有两台机器,分别是node1和node2。我可以在没有密码的情况下通过ssh相互连接

我通过键入以下命令启动程序:
mpirun-np2-f hostfile./hello

可执行文件hello位于两台计算机的同一目录中

然后在我运行之后,我得到一个错误:

PMPI_屏障中的致命错误:其他MPI错误,错误堆栈: PMPI_屏障(425)……MPI_屏障(MPI_通信世界)失败 MPIR\U屏障安装(331)…集体试验期间发生故障 MPIR\U屏障安装(313)…MPIR\U屏障内部(83)…: 出列和设置错误(596):等级为0的通信错误致命 PMPI_屏障中的错误:其他MPI错误,错误堆栈: PMPI_屏障(425)……MPI_屏障(MPI_通信世界)失败 MPIR\U屏障安装(331)…集体试验期间发生故障 MPIR\U屏障安装(313)…MPIR\U屏障内部(83)…: 出列和设置错误(596):秩为1的通信错误

如果我注释掉MPI_Barrier(),它可以正常工作。机器之间的通讯似乎有问题?或者我没有正确安装openmpi?有什么想法吗

我正在使用Ubuntu 12.10


我得到了一些提示:这在MPICH2中不起作用,如果我使用openmpi,它就会起作用。我只是通过sudo安装了MPICH,以便安装mpich2。我错过什么了吗?mpich2的大小比/etc/hosts中的openmpi小得多,一些Linux发行版的较新版本在文件顶部添加了以下类型的行:

127.0.0.1 localhost
127.0.0.1 [hostname]
这应该更改,以便主机名行包含您的实际IP地址。如果您没有进行此更改并出现以下错误,MPI hydra进程将中止:

Fatal error in PMPI_Barrier: Other MPI error, error stack:
PMPI_Barrier(425)...........: MPI_Barrier(MPI_COMM_WORLD) failed
MPIR_Barrier_impl(292)......: 
MPIR_Barrier_or_coll_fn(121): 
MPIR_Barrier_intra(83)......: 
dequeue_and_set_error(596)..: Communication error with rank 0

1) hostfile中的计算机名需要在单独的行中,是这样吗?2) 如果注释MPI_屏障线,程序输出是什么?3) 你是如何编译这个程序的?听起来related@RafaelReiter是对的;这通常是一个配置问题。两个节点之间的无密码ssh是必要的,但MPI通常也需要打开大量端口,因此请查看任何防火墙、iptables规则等:我可以使用openmpi使用此程序,因此网络肯定没有问题。我的主机文件在单独的行中。我通过mpicc-o hello.c编译