2015-02-08 162 views
2

我想編寫使用英特爾TBB和Cilk Plus的英特爾至強融核並行代碼,但我有線程親和力的問題。我想將一個線程綁定到一個邏輯核心。是否可以像在OpenMP中那樣設置親和力?我的意思是KMP_AFFINITY =「compact」。先謝謝你。 :)英特爾TBB和Cilk Plus線程親和力英特爾MIC

+0

如果您*必須*具有良好的晶粒控制線程親和力,您嘗試解決什麼問題? TBB沒有正確的線程關聯,只有任務級關聯。 'tbb :: affinity_partitioner'已經嘗試保持緩存一致性。 – BlamKiwi 2015-02-09 00:48:37

回答

2

是的,這是可能的,此外,建議與Xeon Phi上的affinity_partitioner一起使用。詳情請參閱the blog。這裏有一個簡短的代碼片段,讓你知道它是如何看起來像:

class pinning_observer: public tbb::task_scheduler_observer { 
public: 
    pinning_observer(); 
    /*override*/ void on_scheduler_entry(bool); 
    ~pinning_observer(); 
}; 

pinning_observer pinner; 
pinner.observe(true); 

在Cilk Plus中沒有任何特殊的手段。

+0

這就是我要找的。謝謝。英特爾Cilk Plus的親和力如何? – JudgeDeath 2015-02-09 13:35:54