计算OpenMP中矩阵中所有相邻单元格的总和

时间:2016-11-20 04:59:37

标签: performance matrix parallel-processing openmp

我有一个矩阵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);
 }
}

我不确定应该如何并行化嵌套循环。我在这里做错了什么?

0 个答案:

没有答案