Subprocesamiento de bloques de construcción - Threading Building Blocks

Subprocesamiento de bloques de construcción
Desarrollador (es) Intel
Lanzamiento estable
2021.4 / 4 de octubre de 2021 ; Hace 6 días ( 04/10/2021 )
Repositorio
Escrito en C ++
Sistema operativo FreeBSD, Linux, Solaris, OS X, Windows, Android
Escribe biblioteca o marco
Licencia dual: comercial / de código abierto ( Apache 2.0 ), más Freeware
Sitio web github .com / oneapi-src / oneTBB
intel .com / oneTBB

oneAPI Threading Building Blocks ( oneTBB ), anteriormente Threading Building Blocks (TBB), es una biblioteca de plantillas de C ++ desarrollada por Intel para la programación paralela en procesadores de varios núcleos . Con TBB, un cálculo se divide en tareas que pueden ejecutarse en paralelo. La biblioteca administra y programa subprocesos para ejecutar estas tareas.

Visión general

Un programa TBB crea, sincroniza y destruye gráficos de tareas dependientes de acuerdo con 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 para la programación paralela con el objetivo de desacoplar la programación de los detalles de la máquina subyacente.

TBB implementa el robo de trabajo para equilibrar una carga de trabajo paralela en los núcleos de procesamiento disponibles con el fin de aumentar la utilización del núcleo y, por lo tanto, el escalado. Inicialmente, la carga de trabajo se divide uniformemente 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, TBB 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, permitiendo que las aplicaciones escritas usando 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 era subóptimo para una gran cantidad de núcleos de procesadores, lo que provocaba que hasta el 47% del tiempo de computación se invirtiera en la sobrecarga de programación al ejecutar ciertos puntos de referencia en un sistema de 32 núcleos. .

TBB, al igual que STL (y la parte de la biblioteca estándar de C ++ basada en él), utiliza plantillas en gran medida. Esto tiene la ventaja del polimorfismo de baja sobrecarga , 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 una distribución binaria con soporte y como software de código abierto tanto en formato fuente como binario.

TBB no ofrece garantías de determinismo o ausencia de carreras de datos .

Contenidos de la biblioteca

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

  • Algoritmos básicos: parallel_for, parallel_reduce,parallel_scan
  • Los algoritmos avanzados: parallel_while, parallel_do, parallel_pipeline,parallel_sort
  • Contenedores : concurrent_queue, concurrent_priority_queue, concurrent_vector,concurrent_hash_map
  • Asignación de memoria: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator,cache_aligned_allocator
  • La exclusión mutua : mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex,recursive_mutex
  • Operaciones atómicas : fetch_and_add, fetch_and_increment, fetch_and_decrement, compare_and_swap,fetch_and_store
  • Temporizació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

Sistemas soportados

La versión comercial de TBB 3.0 es compatible con Windows (XP o posterior), OS X (versión 10.5.8 o posterior) y Linux usando Visual C ++ (versión 8.0 o posterior, solo en Windows), Intel C ++ Compiler (versión 11.1 o posterior) o el Colección de compiladores GNU (gcc). Además, la comunidad de código abierto de TBB ha contribuido con parches para Solaris , PowerPC , Xbox 360 , QNX Neutrino y FreeBSD .

Ver también

Notas

Referencias

enlaces externos