2010-09-24 8 views

Respuesta

18

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

+1

Debe mantenga el objeto 'tbb :: task_scheduler_init' vivo después de esto, o volverá a ser automático. –

+2

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'. –

0

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.

9

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
Cuestiones relacionadas