如何确定循环使用"任务"并行化?

时间:2014-11-03 13:44:27

标签: c++ parallel-processing openmp

我是openmp的新手,并且学习如何使用task并行化循环。我做了以下循环:

#pragma omp parallel default(none) firstprivate(left) private(i) shared(length, pivot, data)
    {
#pragma omp for
        for(i = 1; i<length-1; i++)
        {
#pragma omp task
            {
                if(data[left] > pivot)
                {
                    i = length;
                }
                else
                {
                    left = i;
                }
            }
        }
#pragma omp taskwait
    }

我不确定它是否正确并行化,因为它花费的时间比它应该花的更多。如何改进我的代码?

1 个答案:

答案 0 :(得分:0)

在这种情况下,任务指令完全无关紧要,因为(#pragma omp for)完成这项工作。

任务用于无界循环。