Articulo de referencia

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 paral...

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:

  • Algoritmos básicos: parallel_for, parallel_reduce,parallel_scan
  • Algoritmos avanzados: parallel_pipeline,parallel_sort
  • Contenedores : concurrent_queue, concurrent_priority_queue, concurrent_vector, concurrent_hash_map, concurrent_unordered_map, concurrent_unordered_set, concurrent_map,concurrent_set
  • Asignación de memoria: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator,cache_aligned_allocator
  • Exclusión mutua : mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex,recursive_mutex
  • Sincronización: sello de tiempo global de grano fino portátil
  • Programador de tareas: acceso directo para controlar la creación y activación de tareas

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 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 de actualidad en paralelismo.

Referencias

  • Voss, Michael; Asenjo, Rafael; Reinders, James (2019), Pro TBB, Apress, doi : 10.1007/978-1-4842-4398-5 , ISBN 978-1-4842-4397-8, Número de identificación del sujeto  195847637
  • Reinders, James (julio de 2007), Intel Threading Building Blocks: Equipando C++ para el paralelismo de procesadores multinúcleo (edición de bolsillo), Sebastopol: O'Reilly Media, ISBN 978-0-596-51480-8
  • Voss, M. (octubre de 2006), Desmitifique el paralelismo escalable con los algoritmos paralelos genéricos de Intel Threading Building Blocks, archivado desde el original el 5 de febrero de 2012 , consultado el 6 de junio de 2007
  • Voss, M. (diciembre de 2006), Habilite un paralelismo seguro y escalable con los contenedores simultáneos de Intel Threading Building Blocks, archivado desde el original el 5 de febrero de 2012 , consultado el 6 de junio de 2007
  • Hudson, Richard L.; Saha, Bratin; Adl-Tabatabai, Ali-Reza; Hertzberg, Benjamin C. (2006), "McRT-Malloc", Actas del simposio internacional de 2006 sobre gestión de la memoria - ISMM '06 , págs. 74-83, doi : 10.1145/1133956.1133967, ISBN 978-1595932211, Número de identificación del sujeto  9120368
  • Especificación industrial de oneTBB
  • oneTBB en GitHub
  • Sitio web oficial de Intel
Retrieved from "https://en.wikipedia.org/w/index.php?title=Threading_Building_Blocks&oldid=1237023443"