stringtranslate.com

Bloques de construcción de enhebrado

oneAPI Threading Building Blocks (oneTBB; anteriormente Threading Building Blocks o TBB) es una biblioteca de plantillas C++ desarrollada por Intel para programación paralela en procesadores multinúcleo . Al utilizar TBB, un cálculo se divide en tareas que pueden ejecutarse en paralelo. La biblioteca gestiona y programa subprocesos para ejecutar estas tareas.

Descripción general

Un programa oneTBB crea, sincroniza y destruye gráficos de tareas dependientes según algoritmos , es decir, paradigmas de programación paralela de alto nivel (también conocidos como esqueletos algorítmicos ). Luego, las tareas se ejecutan respetando las dependencias de los gráficos. Este enfoque agrupa a TBB en una familia de técnicas de programación paralela con el objetivo de desacoplar la programación de los detalles de la máquina subyacente.

oneTBB implementa el robo de trabajo para equilibrar una carga de trabajo paralela entre los núcleos de procesamiento disponibles para aumentar la utilización del núcleo y, por lo tanto, el escalamiento. Inicialmente, la carga de trabajo se divide equitativamente entre los núcleos de procesador disponibles. Si un núcleo completa su trabajo mientras otros núcleos todavía tienen una cantidad significativa de trabajo en su cola, oneTBB reasigna parte del trabajo de uno de los núcleos ocupados al núcleo inactivo. Esta capacidad dinámica desacopla al programador de la máquina, lo que permite que las aplicaciones escritas utilizando la biblioteca se escale para utilizar los núcleos de procesamiento disponibles sin cambios en el código fuente o el archivo de programa ejecutable. En una evaluación de 2008 de la implementación de robo de trabajo en TBB, investigadores de la Universidad de Princeton descubrieron que no era óptima para una gran cantidad de núcleos de procesadores, lo que provocaba que hasta el 47% del tiempo de computación se gastara en programación de gastos generales cuando se ejecutaban ciertos puntos de referencia en un sistema de 32 núcleos. . [3]

oneTBB, al igual que STL (y la parte de la biblioteca estándar de C++ basada en él), utiliza plantillas ampliamente. Esto tiene la ventaja de un polimorfismo de bajo costo , ya que las plantillas son una construcción en tiempo de compilación que los compiladores modernos de C++ pueden optimizar en gran medida.

oneTBB está disponible comercialmente como distribución binaria con soporte, [4] y como software de código abierto tanto en formato fuente como binario.

oneTBB no ofrece garantías de determinismo o ausencia de carreras de datos . [5]

Contenidos de la biblioteca

oneTBB es una colección de componentes para programación paralela:

Ver también

Notas

  1. ^ "Lanzamientos de Github de bloques de construcción de subprocesos oneAPI". GitHub .
  2. ^ "Opciones sin costo para soporte Intel usted mismo, sin regalías".
  3. ^ Contreras, Gilberto; Martonosi, Margarita (2008). Caracterización y mejora del rendimiento de Intel Threading Building Blocks (PDF) . Simposio internacional IEEE. sobre Caracterización de la Carga de Trabajo.
  4. ^ https://software.intel.com/en-us/intel-tbb Página de inicio de la versión comercial de Intel Threading Building Blocks
  5. ^ Bocchino Jr., Robert L.; Adve, Vikram S.; Adve, Sarita V.; Snir, Marc (2009). La programación paralela debe ser determinista por defecto. Taller USENIX sobre temas candentes en paralelismo.

Referencias

enlaces externos