gpt4 book ai didi

c++ - 嵌套的 C++ for 循环与 openmp 并行化

转载 作者:行者123 更新时间:2023-11-30 03:46:27 25 4
gpt4 key购买 nike

我想使用 openmp 设置矩阵的对角线。

这是计划的一部分:

for(int i=0; i<II; i++)
{
//calculate JJ
#pragma omp parallel for private(j)
for(j=0; j<JJ; j++)
{
for(k=0; k<JJ; k++)
{
for(l=0; l<JJ; l++)
{
//calculate A
for(m=0; m<JJ; m++)
{
if(j==l && k==m)
{
//calculate B
// calculate c=A-B
add C to matrix(diagonal, diagonal);
}
}
}
diagonal++;
}
}
}

如何将其与 openmp 并行化?是否可以仅并行化内部循环?当我运行它时,它给了我错误的结果。

谢谢

最佳答案

你有一个循环携带的依赖:

diagonal++;

声明。因此,您不能将其与 OpenMP 并行化。您需要找到一种方法来打破这种依赖关系(也许在 #pragma omp ordered 指令中运行该语句)

关于c++ - 嵌套的 C++ for 循环与 openmp 并行化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34102821/

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