如何并行化3个二维数组

时间:2015-05-12 09:05:00

标签: c multidimensional-array parallel-processing multiprocessing mpi

我需要检查并行化3个二维数组的最佳方法。其中两个(A和B)在for循环中设置了值,另一个(C)具有A和B的总和。

我必须使用MPI来实现我想要的。我正在考虑单独的过程并检查类似“如果myrank == 0然后使其工作”,但我不知道这是否是最好的选择。我必须并行化的代码是:

for (i=0; i<1000; i++) {
    for (j=0; j<1000; j=j+2) {
        A[i][j] = 1.0;
        A[i][j+1]=-1.0;
    }
}
for (i=0; i<1000; i++) {
    for (j=0; j<1000; j++) {
        B[i][j] = 1.0;
        C[i][j] = 0.0;
    }
}
for (i=0; i<1000; i++) {
    for (j=0; j<1000; j++) {
        for (k=0; k<1000; k++) {
            C[i][j] += A[i][k] * B[k][j];
        }
    }
}
result=0.0;
for (i=0; i<1000; i++) {
    for (j=0; j<1000; j++) {
        result=result+C[i][j];
    }
}

0 个答案:

没有答案