我如何使用MPI_Allgather

时间:2013-04-05 01:41:16

标签: mpi

我正在测试MPI_Allgather,我得到了奇怪的结果...... 下面的代码给出了一个输出:“P0收到:0,42,-1780253336,42,”。 唯一正确的结果是第一个,因为他们都在发送他们的队伍。输出应为:“0,1,2,3”。我不知道为什么这不能按预期工作。

int main(int argc, char* argv[])
{
    int rank = 0;
    int size = 0;
    MPI_Init(&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD,&rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    int* arr = new int[4];

    MPI_Allgather(&rank, 1, MPI_INT, arr, 4, MPI_INT, MPI_COMM_WORLD);

    if(rank == 0)
    {
    printf("P0 received: ");
    for(int i=0; i< 4; i++)
        printf("%i,", arr[i]);
    printf("\n");
    }
    delete arr;
    MPI_Finalize();
}

0 个答案:

没有答案