MPI_Comm_Create挂起而没有响应

时间:2014-03-08 12:05:00

标签: 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);
}

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

RETURNED 0
RETURNED 0

并且程序挂起在MPI_Comm_create

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

0 个答案:

没有答案