MPI代码不适用于2个节点,但使用1个节点

时间:2015-08-05 13:02:38

标签: c++ mpi cluster-computing mpich barrier

超级编辑:

添加广播步骤将导致主节点通过两个进程打印ncols(我可以从中检查输出)。但为什么?我的意思是,所有广播的变量在其声明的行中已经有了一个值! (偏离主题image)。

我有一些基于此example的代码。

我通过这个简单的程序检查了群集配置是否正常,该程序也是它将运行的机器的printed the IP

int main (int argc, char *argv[])
{
  int rank, size;

  MPI_Init (&argc, &argv);      /* starts MPI */
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */
  MPI_Comm_size (MPI_COMM_WORLD, &size);        /* get number of processes */
  printf( "Hello world from process %d of %d\n", rank, size );
  // removed code that printed IP address
  MPI_Finalize();
  return 0;
}

两次打印每台机器的IP。

EDIT_2

如果我打印(仅)网格,就像在示例中一样,我需要一台计算机:

Processes grid pattern:
0 1
2 3

和两个人:

Processes grid pattern:

1 个答案:

答案 0 :(得分:1)

两个节点中的可执行文件不同!

当我配置群集时,我遇到了很多困难,所以当我遇到安装问题时,我就跳过了它。所以现在,更改只会出现在一个节点中。除非一些(或所有)代码是相同的,否则代码会表现得很奇怪。