C中的数组的MPI_Reduce

时间:2011-12-21 19:56:08

标签: c mpi

我最近开始尝试用C语言学习MPI。我正在尝试编写非常小的测试代码,以确保我知道自己在做什么。不幸的是,我似乎遇到了其中一个问题,它将矩阵与向量相乘并输出结果向量。具体来说,当我打电话时:

MPI_Reduce(c, myc, 3, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

其中myc是由每个处理器计算的向量的一部分,我的最终结果是对于所有i,c [i] = 0。计算myc的代码是正确的(使用一个处理器检查并输出myc而不是c)。我假设我在这里做了一些非常愚蠢的事情,但无法弄清楚是什么。

1 个答案:

答案 0 :(得分:2)

所以你希望答案在c而不是myc

语法为:

int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, 
           MPI_Op op, int root, MPI_Comm comm)

所以您要将c发送到myc并附上您的示例。

另请注意,recvbuf仅在根节点上有效,在您的情况下是节点0.所有其他节点在recvbuf中都有垃圾。