Количество потоков, используемых Intel TBB - PullRequest
18 голосов
/ 24 сентября 2010

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

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

Ответы [ 3 ]

19 голосов
/ 30 октября 2010

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

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

tbb::task_scheduler_init init(nthread);

, иначе вы можете использовать

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

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

11 голосов
/ 22 апреля 2013

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

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

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

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

  • Даже планировщик не знает, сколько потоков действительно доступно
  • На компьютере могут выполняться другие процессы
  • Подпрограмма может быть вложена в другие параллельные подпрограммы
0 голосов
/ 24 сентября 2010

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

...