找到所有流程的最高级别

时间:2014-04-14 11:20:41

标签: c mpi

我正在努力学习MPI。如何在mpi 3中MPI_COMM_WORLD内找出具有最高等级的流程?

     MPI_Init(&argc, &argv);
     MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
     MPI_Comm_size(MPI_COMM_WORLD, &p); 

        //More code here

     MPI_Finalize();

我知道MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);会让我获得调用过程的排名,但我想找到MPI_COMM_WORLD中所有过程的最高排名,以便我可以让该过程进行一些计算

1 个答案:

答案 0 :(得分:1)

要获得排名最高的流程,您只需使用MPI_Comm_size(MPI_COMM_WORLD, …)来确定MPI_COMM_WORLD通讯器上的流程总数。由于每个进程都是该通信器的一部分,并且进程从0开始枚举,要获得排名最高的进程的排名,只需从MPI_COMM_WORLD的大小中减去1:

int size = MPI_Comm_size(MPI_COMM_WORLD, &size);
int highest_rank = size - 1;