OpenMP中静态调度的原理很简单:调度程序以循环方式为循环迭代分配循环迭代。我们假设有四个主题: t0 , t1 , t2 , t3 。
如果我们使用静态调度,第五次迭代将再次分配给 t0 。如果 t1 尚未完成工作会怎样?该程序是否阻止?只允许动态调度程序以更智能的方式分配工作(例如“将下一次迭代分配给最后完成的线程”)。
答案 0 :(得分:0)
简短回答,不!
更长,版本。 OpenMP不会自动管理'线程之间的依赖关系。如果在循环迭代之间确实存在数据依赖性,那么作为开发人员,您有责任确保进行同步,以便在并行运行时进行维护。
如果需要在迭代中维护某种顺序,则应查看ordered
指令。