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

MPI code does not work with 2 nodes, but with 1

超级编辑:

添加广播步骤,将导致 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:

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


我配置集群的时候非常费劲,所以挂载遇到问题就直接跳过了。所以现在,更改只会出现在一个节点中。除非部分(或全部)代码相同,否则代码会表现得很奇怪。