¿Cómo elige Intel TBB el número de subprocesos utilizados para una sección paralela?Número de subprocesos utilizados por Intel TBB
¿Hay algún tipo de especificación disponible?
¿Cómo elige Intel TBB el número de subprocesos utilizados para una sección paralela?Número de subprocesos utilizados por Intel TBB
¿Hay algún tipo de especificación disponible?
A partir de TBB versión 2.2 del programador de tareas se inicializará de forma automática y en tiempo de ejecución se encargan de los números de hilos a utilizar, si desea manualmente para cambiar ese número, puede utilizar uno de los métodos siguientes:
Cuando se crea el programador, puede especificar el número de hilos como
tbb::task_scheduler_init init(nthread);
cosa que se pueda utilizar
tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);
En este caso, tbb scheduler crea tantos subprocesos como los núcleos de su CPU
La documentación dice que solo "depende de la configuración del hardware". Posiblemente solo sea el número de núcleos de CPU disponibles.
Dejar que TBB decida el número de subprocesos en el grupo es la opción recomendada; normalmente creará tantos subprocesos de trabajo como CPUs lógicas en la máquina; consulte Class reference for 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 opción de diseño deliberada. De Intel's TBB Parallel Programming Course:
¿Cómo sé cuántos subprocesos están disponibles?
¡No preguntes!
- Ni siquiera el programador sabe cuántos hilos son realmente disponibles
- Puede haber otros procesos que se ejecutan en la máquina
- de rutina se pueden anidar dentro de otras rutinas paralelas
Debe mantenga el objeto 'tbb :: task_scheduler_init' vivo después de esto, o volverá a ser automático. –
Además, el objeto del planificador de tareas solo afecta a los trabajos TBB iniciados desde el hilo actual. Al crear más trabajos de otro hilo, necesita otro 'tbb :: task_scheduler_init'. –