2015-02-08 2 views
2

Я хотел бы написать параллельный код для Intel Xeon Phi с использованием Intel TBB и Cilk Plus, но у меня проблема с привязкой потоков. Я хочу связать один поток с одним логическим ядром. Можно ли установить аффинность, как в OpenMP? Я имею в виду KMP_AFFINITY = "compact". Заранее спасибо. :)Совместимость потоков Intel TBB и Cilk Plus на Intel MIC

+0

Какую проблему вы пытаетесь решить, если вы * должны * иметь сродство с контролируемой резьбой с мелким зерном. TBB не имеет надлежащего родства нитей, только сближение уровня задачи. 'tbb :: affinity_partitioner' уже будет пытаться сохранить когерентность кэша. – BlamKiwi

ответ

2

Да, это возможно и, кроме того, рекомендуется в сочетании с affinity_partitioner на Xeon Phi. Пожалуйста, см. 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

Это то, что я ищу. Благодарю. Как насчет близости в Intel Cilk Plus? – JudgeDeath

Смежные вопросы