【发布时间】:2015-06-02 06:55:57
【问题描述】:
考虑以下场景:我正在编写一个函数,其中有一个计算密集型循环。我将它与 TBB 的 parallel_for 并行化。现在,问题是这个函数可以单独使用,并从并行化中受益。或者它可能在另一个循环中使用。在后一种情况下,外循环也可以并行化。通常,最好只并行化外循环。
通常在 TBB 中并行化外循环和内循环都不是问题,因为与 OpenMP 不同,TBB 中的嵌套并行化不会导致创建额外的线程。 TBB 只是创建更多任务。然而,有时在内部循环中创建更多任务的开销仍然是不可取的(我观察到在一种极端情况下会减慢 40%)。
那么有没有办法让 TBB 在执行另一个 parallel_for 算法时在调用 parallel_for 等时不创建任何任务?类似于OMP_NESTED=FALSE对于OpenMP的效果。
【问题讨论】:
-
我添加了一些段落分隔符,因此这不仅仅是“文字墙”
标签: c++ parallel-processing openmp tbb