带有自定义MPI Communicator的MPI_Barrier

时间:2016-05-30 16:20:31

标签: c mpi barrier communicator

我正在尝试为MPI_COMM_WORLD中的一部分流程设置MPI_Barrier,如下所示:

//Get MPI rank
MPI_Comm_rank(MPI_COMM_WORLD, &current_rank);

//Get group of processes in MPI_COMM_WORLD
MPI_Comm_group(MPI_COMM_WORLD, &world_group);

//Create group with specified ranks 
MPI_Group_incl(world_group, num, ranks, &my_group);

//Create a new communicator based on my_group   
MPI_Comm_create(MPI_COMM_WORLD, my_group, &MY_COMM);

MPI_Barrier(MY_COMM);

(其中ranks是所需排名的数组,num是此数组的大小) 上面的代码导致MPI_Barrier处的NULL通信器错误。

我也尝试了以下内容:

MPI_Comm_split(MPI_COMM_WORLD, color, current_rank, &MY_COMM);

MPI_Barrier(MY_COMM);

(如果当前排名在所需子集中,则color设置为1,否则为0)上述代码无效,屏障似乎根本不起作用。

非常感谢任何帮助,谢谢:)

0 个答案:

没有答案