【问题标题】:MPI Runtime environment issue [duplicate]MPI 运行时环境问题 [重复]
【发布时间】:2014-10-20 15:06:57
【问题描述】:

我正在尝试运行下面的程序

#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

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

【问题讨论】:

    标签: mpi


    【解决方案1】:

    你的线路

    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 等,不喜欢相互混合命令。

    【讨论】:

    • 我不认为OP在这里显示的是实际的程序代码。 printf() 不会在给定当前格式字符串的情况下输出任何数字,并且缺少对 MPI_Finalize() 的调用,因此 MPI 作业将在从 main 返回一级的那一刻异常终止。
    猜你喜欢
    • 2019-05-20
    • 2014-09-20
    • 2013-02-05
    • 2022-12-18
    • 1970-01-01
    • 2020-12-23
    • 2018-01-25
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多