MPI运行时环境问题

时间:2014-08-27 06:24:00

标签: mpi

我正试图在程序

下面运行
#include<stdio.h>
#include<mpi.h>

main(int argc, char **argv){
      int size, myrank;
      MPI_init(NULL, NULL);
      MPI_Comm_size(MPI_COMM_WORLD,&size);
      MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
      printf("My rank is\n",myrank);
}

编译并运行的命令:

mpicc hello.c
mpirun -np 4 a.out

预期产出:

My rank is 0
My rank is 1
My rank is 2
My rank is 3

实际输出:

My rank is 0
My rank is 0
My rank is 0
My rank is 0

为什么我得到所有等级为零的输出,我应该怎么做 得到预期的输出?

1 个答案:

答案 0 :(得分:3)

你的行

printf("My rank is\n",myrank);

缺少%d

printf("My rank is %d\n",myrank);

此外,MPI_init应为MPI_Init,而您缺少MPI_Finalize声明。

除此之外,请确保您运行的a.out确实是您认为的那个,例如使用

mpirun -np 4 ./a.out

而不是

mpirun -np 4 a.out

并确保mpiccmpirun来自同一个实现:OpenMPI,IntelMPI,MPich等,不喜欢将命令混合在一起。