c - openMPI 在服务器集群上运行期间无限等待?

标签 c ipc cluster-computing mpi openmpi

我已成功在服务器和我的计算机之间设置无密码 ssh。 有一个简单的openMPI程序,在单机上运行良好。 但是,不幸的是,当我在集群上尝试此操作时,我既没有收到密码提示(因为我已经设置了 ssh 授权),也没有继续执行。

主机文件如下所示,

# The Hostfile for Open MPI

# The master node, 'slots=8' is used because it has 8 cores
  localhost slots=8
# The following slave nodes are single processor machines:
  gautam@pcys13.grm.polymtl.ca slots=8 
  gautam@srvgrm04 slots=160

我正在集群上运行 hello world MPI 程序,

int main(int argc, char *argv[]) {
  int numprocs, rank, namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME]; 
  double t;
  MPI_Init(&argc, &argv);
  t=MPI_Wtime();    
  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();
}

我像这样运行mpirun -np 16 --hostfile hostfile ./hello

使用 -d 选项时, 日志是这样的,

[gautam@pcys33:~/LTE/check ]% mpirun -np 16 --hostfile hostfile -d ./hello
[pcys33.grm.polymtl.ca:02686] procdir: /tmp/openmpi-sessions-gautam@pcys33.grm.polymtl.ca_0/60067/0/0
[pcys33.grm.polymtl.ca:02686] jobdir: /tmp/openmpi-sessions-gautam@pcys33.grm.polymtl.ca_0/60067/0
[pcys33.grm.polymtl.ca:02686] top: openmpi-sessions-gautam@pcys33.grm.polymtl.ca_0
[pcys33.grm.polymtl.ca:02686] tmp: /tmp
[srvgrm04:77812] procdir: /tmp/openmpi-sessions-gautam@srvgrm04_0/60067/0/1
[srvgrm04:77812] jobdir: /tmp/openmpi-sessions-gautam@srvgrm04_0/60067/0
[srvgrm04:77812] top: openmpi-sessions-gautam@srvgrm04_0
[srvgrm04:77812] tmp: /tmp

你能从日志中做出推断吗?

最佳答案

您只需禁用每台机器的防火墙即可

关于c - openMPI 在服务器集群上运行期间无限等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604574/

相关文章:

c - 套接字描述符在调用 recvfrom 后更改

c 指针,如何将它/它们释放到一个函数中

c - 一个程序改变另一个程序的数据

javascript - Electron 失败时重试加载网页

mysql - 无法启动mysql集群SQL节点

cluster-computing - 野蝇 9 : JGRP000012: discarded message from different cluster hq-cluster (our cluster is ee)

performance - 使用集群和 node-webworker 构建高性能 node.js 应用程序

c - 如何在 C 中将 char 数组转换为普通 char

c - 如何从单个父级创建两个进程

c - 操作单个宽字符