gpt4 book ai didi

c - openmp for 循环

转载 作者:行者123 更新时间:2023-11-30 17:54:13 26 4
gpt4 key购买 nike

我有以下代码:

for(i=0; i<num1; i++)
{
j=i%num2;
a[j]=do_compute(j);
}

假设 num2 << num1。如果我想使用omp for,是否需要使用j作为私有(private)?即如下:

#pragma omp parallel private(i,j)
{
#pragma omp for
for(i=0; i<num1; i++)
{
j=i%num2;
a[j]=do_compute(j);
}
}

或者这样就足够了:

#pragma omp parallel
{
#pragma omp for
for(i=0; i<num1; i++)
{
j=i%num2;
a[j]=do_compute(j);
}
}

谢谢。

最佳答案

如果 j 仅在循环范围内使用,我会执行以下操作:

[...]
unsigned int i;
#pragma omp parallel for
for(i = 0; i < num1; ++i)
{
unsigned int j = i % num2;
a[j] = do_compute(j);
}
[...]

不想在这里挑剔,但考虑到 do_compute 是确定性的并且没有副作用,您最好只使用

[...]
unsigned int i;
#pragma omp parallel for
for(i = 0; i < num2; ++i)
a[i] = do_compute(i);
[...]

关于c - openmp for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075228/

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