gpt4 book ai didi

C - 并行化循环 omp

转载 作者:行者123 更新时间:2023-11-30 15:00:12 25 4
gpt4 key购买 nike

我有一个问题:我必须使用 OMP 并行化这段代码。

存在数据依赖问题,不知道如何解决。有什么建议么?

for (n = 2; n < N+1; n++) {
dz = *(dynamic_d + n-1)*z;
*(dynamic_A + n) = *(dynamic_A + n-1) + dz * (*(dynamic_A + n-2));
*(dynamic_B + n) = *(dynamic_B + n-1) + dz * (*(dynamic_B + n-2));
}

最佳答案

由于依赖关系,您无法并行化循环迭代,但您可以使用部分拆分 dynamic_Adynamic_B 的计算:

#pragma omp parallel sections
{
#pragma omp section
{
// NOTE: Declare n and dz locally so that it is private!
for (int n = 2; n < N+1; n++) {
my_type dz = dynamic_d[n-1] * z;
dynamic_A[n] = dynamic_A[n-1] + dz * dynamic_A[n-2];
}
}
#pragma omp section
{
for (int n = 2; n < N+1; n++) {
my_type dz = dynamic_d[n-1] * z;
dynamic_B[n] = dynamic_B[n-1] + dz * dynamic_B[n-2];
}
}
}

请使用数组索引,而不是邪恶的指针算术引用异常。

关于C - 并行化循环 omp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273169/

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