串行代码和在openmp中并行化代码时使用关键字critical有什么区别?

时间:2014-04-02 08:04:04

标签: parallel-processing openmp

如果我只有一个for循环并行化,并且如果我在并行化时使用#pragma omp critical,那是否会使它等同于串行代码?

1 个答案:

答案 0 :(得分:1)

没有

critical指令指定它所覆盖的代码一次由一个线程执行,但它(最终)将由遇到它的所有线程执行。

single指令指定它所覆盖的代码只能由一个线程执行,但即使这与编译没有OpenMP的代码完全相同。 OpenMP对可以在并行区域内使用的编程结构施加了一些限制(例如没有跳出它们)。此外,在运行时,即使您并未实际并行运行任何代码,也可能会产生启动OpenMP的开销。