stringtranslate.com

Bloques de construcción de roscado

oneAPI Threading Building Blocks (oneTBB; anteriormente Threading Building Blocks o TBB) es una biblioteca de plantillas de C++ desarrollada por Intel para la programación paralela en procesadores multinúcleo . Con TBB, un cálculo se divide en tareas que pueden ejecutarse en paralelo. La biblioteca administra 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 que apuntan a desacoplar la programación de las particularidades 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 con el fin de aumentar la utilización de los núcleos y, por lo tanto, la escalabilidad. Inicialmente, la carga de trabajo se divide de manera uniforme entre los núcleos de procesador disponibles. Si un núcleo completa su trabajo mientras otros núcleos aún tienen una cantidad significativa de trabajo en 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 con la biblioteca escalen 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 del robo de trabajo en TBB, los 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 procesamiento se dedicara a la sobrecarga de programación al ejecutar 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 ella), utiliza plantillas de forma extensiva. Esto tiene la ventaja de un polimorfismo de bajo consumo , ya que las plantillas son una construcción de tiempo de compilación que los compiladores de C++ modernos pueden optimizar en gran medida.

oneTBB está disponible comercialmente como una 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 de ausencia de carreras de datos . [5]

Contenidos de la biblioteca

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

Véase también

Notas

  1. ^ "Lanzamientos de Github de bloques de construcción de subprocesos oneAPI". GitHub .
  2. ^ "Opciones sin costo para el soporte de Intel, libres de regalías".
  3. ^ Contreras, Gilberto; Martonosi, Margaret (2008). Caracterización y mejora del rendimiento de los bloques de construcción de subprocesos de Intel (PDF) . Simposio internacional IEEE sobre caracterización de cargas de trabajo.
  4. ^ https://software.intel.com/en-us/intel-tbb Página de inicio de la versión comercial de los bloques de creación de subprocesos de Intel
  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 de actualidad en paralelismo.

Referencias

Enlaces externos