0

我正在尝试为 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)上面的代码没有效果,屏障似乎根本不起作用。

任何帮助将不胜感激,谢谢:)

4

0 回答 0