我试图了解omp ordered和omp critical之间的区别。他们俩都没有相同的语义吗?在每个代码中编写的代码都可以串行执行,而一个线程处于有序/关键块中,其他线程则等待。我看不出两者之间有什么不同。
答案 0 :(得分:2)
omp critical
用于互斥,omp ordered
是指特定循环,并确保该区域按循环迭代的顺序执行 。因此omp ordered
强于omp critical
,但也只在循环中有意义。
omp ordered
还有一些其他条款,例如simd
,仅强制使用单个SIMD通道。您还可以使用depend
子句手动指定依赖项。
注意:omp critical
和omp ordered
区域在条目和出口处都有隐式内存刷新。