OpenMP中的静态调度循环块可以吗?

时间:2015-11-28 17:30:42

标签: c++ openmp

OpenMP中静态调度的原理很简单:调度程序以循环方式为循环迭代分配循环迭代。我们假设有四个主题: t0 t1 t2 t3

如果我们使用静态调度,第五次迭代将再次分配给 t0 。如果 t1 尚未完成工作会怎样?该程序是否阻止?只允许动态调度程序以更智能的方式分配工作(例如“将下一次迭代分配给最后完成的线程”)。

1 个答案:

答案 0 :(得分:0)

简短回答,不!

更长,版本。 OpenMP不会自动管理'线程之间的依赖关系。如果在循环迭代之间确实存在数据依赖性,那么作为开发人员,您有责任确保进行同步,以便在并行运行时进行维护。

如果需要在迭代中维护某种顺序,则应查看ordered指令。