For-loop内部并行区域

时间:2012-07-15 15:44:19

标签: c++ openmp

如果并行区域内存在for循环,for循环是否会再次并行化,或者每个线程都会执行自己的for循环?

T sum;

#pragma omp parallel
{
    #pragma omp for reduction(+: sum)
    for (;;)
    {
        T priv_var;

        sum += priv_var;
    }
}

1 个答案:

答案 0 :(得分:3)

是的,此代码将导致OpenMP在for区域生成的线程之间并行parallel循环。但是,我认为您当前的for声明对于OpenMP并行化无效。您需要显式提供整数循环变量,start和end以及increment表达式。

实际上,您的代码将等同于#pragma omp parallel for reduction(+: sum)的单个循环。

More information on MDSN