Количество потоков, используемых 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.