我正在努力学习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
中所有过程的最高排名,以便我可以让该过程进行一些计算
答案 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;