尝试排除进程级别0时出现MPI_Group_excl致命错误.c ++

时间:2017-12-20 23:25:18

标签: c++ parallel-processing runtime-error mpi

大家好,我对一般的编码和MPI都很陌生。     我确定这一定是一个非常愚蠢的错误,但我无法理解为什么这个代码:

<input type="text" 
       data-link="{:Data.ListName linkTo=Editing.ListName:}  
       id{:'txtListName_' + #getIndex()}" >

给了我以下错误:

#include <mpi.h>

int main(int arg, char** argvs) {
    int rank, numOfProcess;
    MPI_Init(&arg, &argvs);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &numOfProcess);

    int ranks[1] = { 0 };
    MPI_Group orig_group, new_group;
    MPI_Comm new_comm;
    MPI_Comm_group(MPI_COMM_WORLD, &orig_group);
    MPI_Group_excl(orig_group, numOfProcess - 1, ranks, &new_group);
    MPI_Comm_create(MPI_COMM_WORLD, new_group, &new_comm);
    MPI_Finalize();
    return 0;
}

如果我错了,请纠正我,但我正在创建的“new_group”应该包含每个进程,但是等级为0的进程。 为什么它给我这个错误?我在数组“rank”中指定我要删除等级0,我迷路了。

非常感谢。

1 个答案:

答案 0 :(得分:0)

您没有正确使用MPI_Group_excl()

  

<强>语法

   int MPI_Group_excl(MPI_Group group, int n, const int ranks[],
        MPI_Group *newgroup)
     

INPUT PARAMETERS

   n         Number of elements in array ranks (integer).

   ranks     Array of integer ranks in group not to appear in newgroup.

由于ranks是一个包含一个元素的数组,因此您应该如何更新通话

MPI_Group_excl(orig_group, 1, ranks, &new_group);