我是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
}
我不确定它是否正确并行化,因为它花费的时间比它应该花的更多。如何改进我的代码?
答案 0 :(得分:0)
在这种情况下,任务指令完全无关紧要,因为(#pragma omp for)完成这项工作。
任务用于无界循环。