Number of threads used by Intel TBB

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 15:51:01

问题


How does Intel TBB choose the number of threads to used for a parallel section?

Is there some kind of specification available?


回答1:


As of TBB Version 2.2 the task scheduler will be automatically initialized and on runtime take care of the numbers of threads to use, if you manually want to change that number, you can use one of the following methods:

When you create the scheduler, you can specify the number of threads as

tbb::task_scheduler_init init(nthread);

else you can use

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

In this case, tbb scheduler creates as many threads as your CPU cores




回答2:


Letting TBB decide the number of threads in the pool is the recommended option - it will usually create as many worker threads as there are logical CPUs on the machine - see Class reference for tbb::task_scheduler_init.

It's not easy to find out how many worker threads exist or are executing tasks at any given time - this is a deliberate design choice. From Intel's TBB Parallel Programming Course:

How do I know how many threads are available?

Do not ask!

  • Not even the scheduler knows how many threads really are available
  • There may be other processes running on the machine
  • Routine may be nested inside other parallel routines



回答3:


Documetation says just "dependent on hardware configuration". Possibly it just number of CPU cores available.



来源:https://stackoverflow.com/questions/3786408/number-of-threads-used-by-intel-tbb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!