openmp循环结果变为零

时间:2014-01-19 14:11:03

标签: c++ openmp

我试图用openmp实现我的代码,但我遇到了一些麻烦。我的代码有几个循环,所以我试图并行化每个“for”块,以使我的代码运行得更快。但是我有问题并行化某些块。问题基本上是我在并行化时获得的结果趋向于0,而当代码运行时没有openmp它们不会。

这是我尝试并行化的块的示例(其中有3个):

#pragma omp parallel for private(j)
     for(i=1;i<127;i++)
        for(j=1;j<127;j++)
           {
              dpx=dp(p[i+1][j],p[i-1][j]);
              dpy=dp(p[i][j+1],p[i][j-1]);
              d2px=d2p(p[i+1][j],p[i][j],p[i-1][j]);
              dpx=dp(p[i][j+1],p[i][j],p[i][j-1]);

              f=F(d2px,d2py,dpx,dpy,p[i][j],i,j);
              p1[i][j]=p[i][j] + f;
            }

有没有人知道为什么我得到p或p1值倾向于0的结果?我想也许dpx,dpy ......也需要私密,但也没有用。

1 个答案:

答案 0 :(得分:1)

您正在设置dpx两次而不使用它。这是有意的吗?或者您希望第二个电话是d2py吗?你永远不会设置d2py,然后使用它,这似乎是可疑的。