multithreading - parallel for tbb
NĂºmero de hilos utilizados por Intel TBB (3)
A partir de la versión 2.2 de TBB, el programador de tareas se iniciará automáticamente y en tiempo de ejecución se encargará de la cantidad de subprocesos que se utilizarán. Si desea cambiar ese número manualmente, puede usar uno de los siguientes métodos:
Cuando crea el planificador, puede especificar el número de subprocesos como
tbb::task_scheduler_init init(nthread);
otra cosa que puedas usar
tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);
En este caso, el planificador de tbb crea tantos subprocesos como sus núcleos de CPU
¿Cómo elige Intel TBB el número de subprocesos que se utilizarán para una sección paralela?
¿Hay algún tipo de especificación disponible?
La documentación dice "dependiente de la configuración del hardware". Posiblemente sea solo el número de núcleos de CPU disponibles.
Permitir que TBB decida la cantidad de subprocesos en el grupo es la opción recomendada; por lo general, creará tantos subprocesos de trabajo como CPU lógicas en la máquina. Consulte Referencia de clase para tbb :: task_scheduler_init .
No es fácil averiguar cuántos subprocesos de trabajo existen o están ejecutando tareas en un momento dado, esta es una elección de diseño deliberada. Del curso de programación paralela TBB de Intel :
¿Cómo puedo saber cuántos hilos hay disponibles?
¡No preguntes!
- Ni siquiera el programador sabe cuántos subprocesos realmente están disponibles
- Puede haber otros procesos ejecutándose en la máquina
- La rutina puede estar anidada dentro de otras rutinas paralelas.