1

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

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

4

1 回答 1

2

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

于 2010-03-09T00:40:05.260 回答