MPI_Comm_Create挂起而没有响应

New*_*oid 5 debugging mpi mpich

我希望多播到不超过4台计算机的组中,MPI_bcast是否仍比多个单播节省大量时间(请注意我的组很小)?

给定机器的数量和这些机器的等级,我编写了以下函数来创建新的通信器。

void createCommunicator(MPI_Comm *NGBRS_WORLD, int num_ngbrs, int *ngbrs_ranks)
{
        MPI_Group NGBRS_GROUP, MPI_COMM_GROUP;

        int ret = MPI_Comm_group(MPI_COMM_WORLD, &MPI_COMM_GROUP);
        printf("RETURNED %d\n", ret);

        ret = MPI_Group_incl(MPI_COMM_GROUP, num_ngbrs, ngbrs_ranks, &NGBRS_GROUP);
        printf("RETURNED %d\n", ret);

        ret = MPI_Comm_create(MPI_COMM_WORLD, NGBRS_GROUP, NGBRS_WORLD);
        printf("RETURNED : %d\n", ret);
}
Run Code Online (Sandbox Code Playgroud)

当我调用此函数时,输出为:

RETURNED 0
RETURNED 0
Run Code Online (Sandbox Code Playgroud)

该程序只是挂在MPI_Comm_create

关于可能出什么问题或如何调试问题的任何想法?请注意,我已将ngbrs_ranks动态分配为num_ngbrs大小。