c++ - 使用线程构建 block (TBB) 时如何修改线程调度行为?

标签 c++ tbb

有谁知道在使用 TBB 时如何修改线程调度(特别是亲和性)?对简单的并行应用程序进行高级分析,似乎 TBB 正在以降低性能的方式指定底层线程的亲和性。具体来说,我正在运行的内核启用了超线程,看起来 TBB 正在将线程关联到同一个内核,即使有一个完全卸载的不同内核也是如此。

FWIW,我意识到 TBB 很可能在做“正确的事”,改变线程的亲和性只会降低性能。我只是想试验一下,看看是否真的如此。

最佳答案

TBB 2.1 添加了一个关联分区器,它根据缓存关联将任务分配给线程。使用此分区程序而不是默认分区程序 might help out .您还可以深入研究单个任务并使用 tbb::task::set_affinity(文档 here)。如果您的 tbb::task 子类实现了 note_affinity() 回调,则调度程序可以在任务碰巧在其亲和性指示的线程以外的线程上运行时通知您.

关于c++ - 使用线程构建 block (TBB) 时如何修改线程调度行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405849/

相关文章:

c++ - 如何在任务组中等待 Intel TBB 中的单个任务并杀死其他任务?

c++ - 为什么我会收到 CL_MEM_OBJECT_ALLOCATION_FAILURE?

c++ - 函数中的变量初始化错误

c++ - Wix:从 C++ 自定义操作添加到列表框

c++ - 使用 lambda 的线程构建 block (TBB) 排队任务

带有 TBB 和 IPP 的 Opencv

c++ - 如何使用 Intel TBB 并行运行一个函数两次?

c++ - CUDA nvlink 警告 : SM Arch ('sm_35' ) not found

c++ - 返回对象的 const 拷贝时发出警告

c++ - tbb::parallel_reduce 对比 tbb::combinable 对比 tbb::enumerable_thread_specific