gpt4 book ai didi

c++ - openmp 循环结果归零

转载 作者:行者123 更新时间:2023-11-28 07:09:38 25 4
gpt4 key购买 nike

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

这是我尝试并行化的 block 示例(其中有 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... 也需要是私有(private)的,但这也没有用。

最佳答案

您设置了两次 dpx 而没有使用它。这是故意的吗?还是您希望第二个调用是 d2py?你永远不会设置 d2py,然后使用它,这看起来很可疑。

关于c++ - openmp 循环结果归零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com