我需要检查并行化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];
}
}