我正试图在程序
下面运行#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
为什么我得到所有等级为零的输出,我应该怎么做 得到预期的输出?
答案 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
并确保mpicc
和mpirun
来自同一个实现:OpenMPI,IntelMPI,MPich等,不喜欢将命令混合在一起。