fbpx
Wikipedia

Threading Building Blocks

oneAPI Threading Building Blocks (oneTBB; formerly Threading Building Blocks or 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.

Threading Building Blocks
Developer(s)Intel
Stable release
2021.8 / February 17, 2023; 13 months ago (2023-02-17)[1]
Repository
  • github.com/oneapi-src/oneTBB
Written inC++
Operating systemFreeBSD, Linux, Solaris, macOS, Windows, Android
Typelibrary or framework
Licensedual: commercial / open source (Apache 2.0), plus Freeware[2]
Websitegithub.com/oneapi-src/oneTBB
intel.com/oneTBB

Overview edit

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

oneTBB 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, oneTBB 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 system.[3]

oneTBB, 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.

oneTBB is available commercially as a binary distribution with support,[4] and as open-source software in both source and binary forms.

oneTBB does not provide guarantees of determinism or freedom from data races.[5]

Library contents edit

oneTBB is a collection of components for parallel programming:

  • Basic algorithms: parallel_for, parallel_reduce, parallel_scan
  • Advanced algorithms: parallel_pipeline, parallel_sort
  • Containers: concurrent_queue, concurrent_priority_queue, concurrent_vector, concurrent_hash_map, concurrent_unordered_map, concurrent_unordered_set, concurrent_map, concurrent_set
  • 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
  • Timing: portable fine grained global time stamp
  • Task scheduler: direct access to control the creation and activation of tasks

See also edit

Notes edit

  1. ^ "oneAPI Threading Building Blocks Github Releases". GitHub.
  2. ^ "No Cost Options for Intel Support yourself, Royalty-Free".
  3. ^ Contreras, Gilberto; Martonosi, Margaret (2008). Characterizing and improving the performance of Intel Threading Building Blocks (PDF). IEEE Int'l Symp. on Workload Characterization.
  4. ^ https://software.intel.com/en-us/intel-tbb Intel Threading Building Blocks Commercial Version Homepage
  5. ^ 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.

References edit

  • Voss, Michael; Asenjo, Rafael; Reinders, James (2019), Pro TBB, Apress, doi:10.1007/978-1-4842-4398-5, ISBN 978-1-4842-4397-8, S2CID 195847637
  • 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), , archived from the original on 2012-02-05, retrieved 2007-06-06
  • Voss, M. (December 2006), , archived from the original on 2012-02-05, retrieved 2007-06-06
  • 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:10.1145/1133956.1133967, ISBN 978-1595932211, S2CID 9120368

External links edit

  • oneTBB Industry Specification
  • oneTBB on GitHub
  • Official website at Intel

threading, building, blocks, this, article, rely, excessively, sources, closely, associated, with, subject, potentially, preventing, article, from, being, verifiable, neutral, please, help, improve, replacing, them, with, more, appropriate, citations, reliable. This article may rely excessively on sources too closely associated with the subject potentially preventing the article from being verifiable and neutral Please help improve it by replacing them with more appropriate citations to reliable independent third party sources January 2016 Learn how and when to remove this template message oneAPI Threading Building Blocks oneTBB formerly Threading Building Blocks or 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 Threading Building BlocksDeveloper s IntelStable release2021 8 February 17 2023 13 months ago 2023 02 17 1 Repositorygithub wbr com wbr oneapi src wbr oneTBBWritten inC Operating systemFreeBSD Linux Solaris macOS Windows AndroidTypelibrary or frameworkLicensedual commercial open source Apache 2 0 plus Freeware 2 Websitegithub wbr com wbr oneapi src wbr oneTBB intel wbr com wbr oneTBB Contents 1 Overview 2 Library contents 3 See also 4 Notes 5 References 6 External linksOverview editA oneTBB program creates synchronizes and destroys graphs of dependent tasks according to algorithms i e high level parallel programming paradigms a k a Algorithmic Skeletons Tasks are then executed respecting graph dependencies This approach groups TBB in a family of techniques for parallel programming aiming to decouple the programming from the particulars of the underlying machine oneTBB 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 oneTBB 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 system 3 oneTBB 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 oneTBB is available commercially as a binary distribution with support 4 and as open source software in both source and binary forms oneTBB does not provide guarantees of determinism or freedom from data races 5 Library contents editoneTBB is a collection of components for parallel programming Basic algorithms parallel for parallel reduce parallel scan Advanced algorithms parallel pipeline parallel sort Containers concurrent queue concurrent priority queue concurrent vector concurrent hash map concurrent unordered map concurrent unordered set concurrent map concurrent set 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 Timing portable fine grained global time stamp Task scheduler direct access to control the creation and activation of tasksSee also editIntel oneAPI Base Toolkit Intel Integrated Performance Primitives IPP Intel oneAPI Data Analytics Library oneDAL Intel oneAPI Math Kernel Library oneMKL Intel Advisor Intel Inspector Intel VTune Profiler 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 Software Architecture Building BlocksNotes edit oneAPI Threading Building Blocks Github Releases GitHub No Cost Options for Intel Support yourself Royalty Free Contreras Gilberto Martonosi Margaret 2008 Characterizing and improving the performance of Intel Threading Building Blocks PDF IEEE Int l Symp on Workload Characterization https software intel com en us intel tbb Intel Threading Building Blocks Commercial Version Homepage 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 References editVoss Michael Asenjo Rafael Reinders James 2019 Pro TBB Apress doi 10 1007 978 1 4842 4398 5 ISBN 978 1 4842 4397 8 S2CID 195847637 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 archived from the original on 2012 02 05 retrieved 2007 06 06 Voss M December 2006 Enable Safe Scalable Parallelism with Intel Threading Building Blocks Concurrent Containers archived from the original on 2012 02 05 retrieved 2007 06 06 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 10 1145 1133956 1133967 ISBN 978 1595932211 S2CID 9120368External links editoneTBB Industry Specification oneTBB on GitHub Official website at Intel Retrieved from https en wikipedia org w index php title Threading Building Blocks amp oldid 1163514220, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.