【问题标题】:What is the difference between a serial code and using the keyword critical while parallelizing a code in openmp?在 openmp 中并行化代码时,串行代码和使用关键字关键有什么区别?
【发布时间】:2014-04-02 08:04:04
【问题描述】:

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

【问题讨论】:

    标签: parallel-processing openmp


    【解决方案1】:

    没有。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      相关资源
      最近更新 更多