Mon . Mon Jul 2018

Threading Building Blocks

Threading Building Blocks TBB is a C++ template library developed by Intel for parallel programming on multi-core processors Using TBB, a computation is broken down into tasks that can run in parallel The library manages and schedules threads to execute these tasks


  • 1 Overview
  • 2 Library contents
  • 3 Systems supported
  • 4 See also
  • 5 Notes
  • 6 References
  • 7 External links


A TBB program creates, synchronizes and destroys graphs of dependent tasks according to algorithms, ie high-level parallel programming paradigms aka Algorithmic Skeletons Tasks are then executed respecting graph dependencies This approach groups TBB in a family of solutions for parallel programming aiming to decouple the programming from the particulars of the underlying machine

TBB implements work stealing to balance a parallel workload across available processing cores in order to increase core utilization and therefore scaling Initially, the workload is evenly divided among the available processor cores If one core completes its work while other cores still have a significant amount of work in their queue, TBB reassigns some of the work from one of the busy cores to the idle core This dynamic capability decouples the programmer from the machine, allowing applications written using the library to scale to utilize the available processing cores with no changes to the source code or the executable program file In a 2008 assessment of the work stealing implementation in TBB, researchers from Princeton University found that it was suboptimal for large numbers of processors cores, causing up to 47% of computing time spent in scheduling overhead when running certain benchmarks on a 32-core system4

TBB, like the STL and the part of the C++ standard library based on it, uses templates extensively This has the advantage of low-overhead polymorphism, since templates are a compile-time construct which modern C++ compilers can largely optimize away

Intel TBB is available commercially as a binary distribution with support,5 and as open-source software in both source and binary forms6

TBB does not provide guarantees of determinism or freedom from data races7

Library contentsedit

TBB is a collection of components for parallel programming:

  • Basic algorithms: parallel_for, parallel_reduce, parallel_scan
  • Advanced algorithms: parallel_while, parallel_do, parallel_pipeline, parallel_sort
  • Containers: concurrent_queue, concurrent_priority_queue, concurrent_vector, concurrent_hash_map
  • Memory allocation: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator, cache_aligned_allocator
  • Mutual exclusion: mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex, recursive_mutex
  • Atomic operations: fetch_and_add, fetch_and_increment, fetch_and_decrement, compare_and_swap, fetch_and_store
  • Timing: portable fine grained global time stamp
  • Task scheduler: direct access to control the creation and activation of tasks

Systems supportededit

The TBB commercial release 30 supports Windows XP or newer, OS X version 1058 or higher and Linux using Visual C++ version 80 or higher, on Windows only, Intel C++ Compiler version 111 or higher or the GNU Compiler Collection gcc8 Additionally, the TBB open source community has contributed patches for Solaris,9 PowerPC, Xbox 360, QNX Neutrino, and FreeBSD

See alsoedit

  • Cilk/Cilk Plus
  • Intel Parallel Studio XE
  • Intel Integrated Performance Primitives IPP
  • Intel Data Analytics Acceleration Library DAAL
  • Intel Math Kernel Library MKL
  • Intel Parallel Advisor
  • Intel Parallel Inspector
  • Intel VTune Amplifier
  • Intel Concurrent Collections CnC
  • Algorithmic skeleton
  • Parallel computing
  • List of C++ multi-threading libraries
  • List of C++ template libraries
  • Parallel Patterns Library
  • Grand Central Dispatch GCD


  1. ^ "What's New Intel® Threading Building Blocks 2017" 
  2. ^ "Intel Threading Building Blocks Release Notes" 
  3. ^ "No Cost Options for Intel Parallel Studio XE, Support yourself, Royalty-Free" 
  4. ^ Contreras, Gilberto; Martonosi, Margaret 2008 Characterizing and improving the performance of Intel Threading Building Blocks PDF IEEE Int'l Symp on Workload Characterization 
  5. ^ http://wwwthreadingbuildingblockscom Intel Threading Building Blocks Commercial Version Homepage
  6. ^ http://wwwthreadingbuildingblocksorg Threading Building Blocks Open Source Project Homepage
  7. ^ Bocchino Jr, Robert L; Adve, Vikram S; Adve, Sarita V; Snir, Marc 2009 Parallel Programming Must Be Deterministic by Default USENIX Workshop on Hot Topics in Parallelism 
  8. ^ "Intel Threading Building Blocks - Release Notes Version 30" Retrieved 2011-08-08 
  9. ^ "Using Intel's Threaded Building Blocks TBB With Sun Studio Express" Retrieved 2008-05-08 


  • Reinders, James July 2007, Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism Paperback ed, Sebastopol: O'Reilly Media, ISBN 978-0-596-51480-8 
  • Voss, M October 2006, Demystify Scalable Parallelism with Intel Threading Building Blocks' Generic Parallel Algorithms 
  • Voss, M December 2006, Enable Safe, Scalable Parallelism with Intel Threading Building Blocks' Concurrent Containers 
  • Hudson, Richard L; Saha, Bratin; Adl-Tabatabai, Ali-Reza; Hertzberg, Benjamin C 2006, "McRT-Malloc", Proceedings of the 2006 international symposium on Memory management - ISMM '06, pp 74–83, doi:101145/11339561133967, ISBN 1595932216 

External linksedit

  • Official website
  • tbb on GitHub
  • Official website at Intel

Threading Building Blocks Information about

Threading Building Blocks

Threading Building Blocks
Threading Building Blocks

Threading Building Blocks Information Video

Threading Building Blocks viewing the topic.
Threading Building Blocks what, Threading Building Blocks who, Threading Building Blocks explanation

There are excerpts from wikipedia on this article and video

Random Posts

Baltasar Garzón

Baltasar Garzón

Baltasar Garzón Real Spanish pronunciation: baltaˈsar ɣarˈθon; born 26 October 1955 is a Spanis...
List of Kings of Lesotho

List of Kings of Lesotho

This page contains a list of paramount chiefs and kings of Lesotho Contents 1 Succession 2 King...
Stanley Buckmaster, 1st Viscount Buckmaster

Stanley Buckmaster, 1st Viscount Buckmaster

Stanley Owen Buckmaster, 1st Viscount Buckmaster GCVO PC KC 9 January 1861 – 5 December 1934 was a B...
Musical keyboard

Musical keyboard

A musical keyboard is the set of adjacent depressible levers or keys on a musical instrument Keyboar...