我有一个矩阵A,其第一行和第一列设置为1,所有剩余的元素都是0.从元素A [1] [1]开始,我想应用一个公式来计算和存储所有的总和相邻的细胞。
for (i=1;i<n;i++){
for (j=1;j<n;j++){
tmp = A[i][j];
A[i][j]= 0.2*(A[i][j] + A[i][j-1] + A[i-1][j] + A[i][j+1] + A[i+1][j]);
diff += fabs(A[i][j] - tmp);
}
我正在对这段代码进行50次迭代。我想使用OpenMP并行化它。我尝试在外环上面写减速,但它会缩短运行时间。
for(k=0; k<50; k++){
#pragma omp parallel for reduction(+:diff)
for (i=1;i<n;i++){
for (j=1;j<n;j++){
tmp = A[i][j];
A[i][j]= 0.2*(A[i][j] + A[i][j-1] + A[i-1][j] + A[i][j+1] + A[i+1][j]);
diff += fabs(A[i][j] - tmp);
}
}
我不确定应该如何并行化嵌套循环。我在这里做错了什么?