我正在尝试在C中使用MPI_Reduce()来计算带有npts元素的名为phi的向量。为此,我已经为每个进程分配了一个长向量块longvec,分别对这些块进行求和,然后在进程0的末尾对每个处理器的部分结果求和,以获得每个元素的估计值。
我的结果非常愚蠢......有谁能告诉我我在下面的代码中犯了什么错误?
double phie[npts];
phitemp = (double*) malloc (nprocs * sizeof(double));
for (i = 0; i < npts; i++) {
phitemp[rank] = 0;
for (x = rank * 10 + 1; x <= (rank + 1) * 10; x++) {
phitemp[rank] = phitemp[rank] + longvec[x] * vector[i]; }
}
MPI_Reduce(phitemp, & (((double *) phivec)[i]), 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
}