omp ordered 和 omp critical 之间的区别

Difference between omp ordered and omp critical

我想了解 omp ordered 和 omp critical 之间的区别。他们都没有相同的语义吗?每个线程中编写的代码都被串行执行,当一个线程在 ordered/critical 块中时,其他线程等待。我看不出两者有什么区别。

omp critical是为了互斥omp ordered是指一个特定的循环,保证region按顺序依次执行循环迭代次数。因此 omp orderedomp critical 强,但也只在循环中才有意义。

omp ordered 还有一些其他条款,例如 simd 强制仅使用单个 SIMD 通道。您还可以使用 depend 子句手动指定依赖项。

注意:omp criticalomp ordered 区域在入口和出口处都有隐式内存刷新。