Количество потоков, используемых Intel TBB

как Intel TBB выбирает количество потоков, используемых для параллельного раздела?

есть ли какая-то спецификация?

3 ответов


начиная с TBB версии 2.2 планировщик задач будет автоматически инициализирован и во время выполнения позаботится о количестве потоков для использования, если вы вручную хотите изменить это число, вы можете использовать один из следующих методов:

при создании планировщика можно указать количество потоков, как

tbb::task_scheduler_init init(nthread);

еще вы можете использовать

tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);

в этом случае планировщик tbb создает столько потоков, сколько ядер процессора


позволить TBB решить количество потоков в пуле является рекомендуемым вариантом - он обычно создает столько рабочих потоков, сколько логических процессоров на машине-см. ссылка на класс для tbb:: task_scheduler_init.

нелегко узнать, сколько рабочих потоков существует или выполняет задачи в любой момент времени - это преднамеренный выбор дизайна. От курс параллельного программирования Intel TBB:

Как узнать, сколько потоков доступно?

Не спрашивай!

  • даже планировщик не знает, сколько потоков на самом деле доступно
  • на машине могут работать и другие процессы
  • процедура может быть вложена в другие параллельные процедуры

Documetation говорит просто "зависит от конфигурации оборудования". Возможно, это просто количество доступных ядер CPU.