2010-03-09 62 views
1

有誰知道在使用TBB時如何修改線程調度(特別是親和性)?對簡單的並行應用程序進行高級別分析時,似乎TBB正在以降低性能的方式指定基礎線程的相關性。具體而言,我正在運行的核心已啓用超線程,並且看起來像TBB正在將線程關聯到同一核心,即使存在完全卸載的不同核心。如何在使用線程構建模塊(TBB)時修改線程調度行爲?

FWIW,我意識到TBB可能做的是「正確的事情」,改變線程的親和力只會降低性能。我只想嘗試一下,看看是否確實如此。

回答

2

TBB 2.1添加了一個關聯分區程序,該關聯分區程序根據高速緩存關聯將任務分配給線程。使用此分區而不是默認的might help out。您也可以潛入個別任務並使用tbb::task::set_affinity(文檔here)。如果您的子類tbb::task實現note_affinity()回調,則調度程序可以通知您該任務是否發生在除親和性指示的線程以外的線程上。

相關問題