请输入您要查询的百科知识:

 

词条 Threading Building Blocks
释义

  1. Overview

  2. Library contents

  3. Systems supported

  4. See also

  5. Notes

  6. References

  7. External links

{{third-party|date=January 2016}}{{Infobox software
|name = Threading Building Blocks
|logo =
|screenshot =
|caption =
|collapsible =
|author =
|developer = Intel
|released =
|latest release version = 2019 Update 3
|latest release date = {{Release date and age|2018|12|04}}[1]
|latest preview version =
|latest preview date =
|frequently updated =
|programming language = C++
|operating system = FreeBSD, Linux, Solaris, OS X, Windows, Android
|platform =
|size =
|language =
|status =
|genre = library or framework
|license = dual: commercial / open source (Apache 2.0), plus Freeware[2]
|website = {{URL|www.threadingbuildingblocks.org}}
{{URL|software.intel.com/en-us/intel-tbb}}
{{URL|https://github.com/01org/tbb}}
}}

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.

Overview

A TBB 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 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 system.[3]

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,[4] and as open-source software in both source and binary forms.[5]

TBB does not provide guarantees of determinism or freedom from data races.[6]

Library contents

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 supported

The TBB commercial release 3.0 supports Windows (XP or newer), OS X (version 10.5.8 or higher) and Linux using Visual C++ (version 8.0 or higher, on Windows only), Intel C++ Compiler (version 11.1 or higher) or the GNU Compiler Collection (gcc).[7] Additionally, the TBB open source community has contributed patches for Solaris,[8] PowerPC, Xbox 360, QNX Neutrino, and FreeBSD.

See also

  • 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)

Notes

1. ^{{cite web |title=Intel® Threading Building Blocks Release Notes and New Features |url=https://software.intel.com/en-us/articles/intel-threading-building-blocks-release-notes}}
2. ^{{cite web|title=No Cost Options for Intel Parallel Studio XE, Support yourself, Royalty-Free|url=https://software.intel.com/en-us/free_tools_and_libraries}}
3. ^{{cite conference |last1=Contreras |first1=Gilberto |first2=Margaret |last2=Martonosi |title=Characterizing and improving the performance of Intel Threading Building Blocks |conference=IEEE Int'l Symp. on Workload Characterization |year=2008 |url=http://www.iiswc.org/iiswc2008/Papers/006.pdf}}
4. ^http://www.threadingbuildingblocks.com Intel Threading Building Blocks Commercial Version Homepage
5. ^http://www.threadingbuildingblocks.org Threading Building Blocks Open Source Project Homepage
6. ^{{cite conference |first1=Robert L. |last1=Bocchino Jr. |first2=Vikram S. |last2=Adve |first3=Sarita V. |last3=Adve |first4=Marc |last4=Snir |title=Parallel Programming Must Be Deterministic by Default |conference=USENIX Workshop on Hot Topics in Parallelism |year=2009 |url=https://www.usenix.org/legacy/event/hotpar09/tech/full_papers/bocchino/bocchino_html/}}
7. ^{{cite web |url=http://software.intel.com/sites/products/documentation/hpc/tbb/release_notes.txt |title=Intel Threading Building Blocks - Release Notes Version 3.0 |accessdate=2011-08-08}}
8. ^{{cite web |url=http://developers.sun.com/solaris/articles/tbb_intro.html|title=Using Intel's Threaded Building Blocks (TBB) With Sun Studio Express|accessdate=2008-05-08}}

References

  • {{Citation|last=Reinders|first=James |date=July 2007|url=http://www.oreilly.com/catalog/9780596514808 |title=Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism|edition=Paperback|location= Sebastopol|publisher= O'Reilly Media|isbn= 978-0-596-51480-8}}
  • {{Citation|last=Voss|first= M.|date=October 2006|url=http://www.devx.com/cplus/Article/32935 |title=Demystify Scalable Parallelism with Intel Threading Building Blocks' Generic Parallel Algorithms}}
  • {{Citation|last=Voss|first= M.|date=December 2006|url=http://www.devx.com/cplus/Article/33334 |title=Enable Safe, Scalable Parallelism with Intel Threading Building Blocks' Concurrent Containers}}
  • {{Citation|doi=10.1145/1133956.1133967|pages=74–83|chapter=McRT-Malloc|title=Proceedings of the 2006 international symposium on Memory management - ISMM '06|year=2006|last1=Hudson|first1=Richard L.|last2=Saha|first2=Bratin|last3=Adl-Tabatabai|first3=Ali-Reza|last4=Hertzberg|first4=Benjamin C.|isbn=978-1595932211}}

External links

  • {{Official website|www.threadingbuildingblocks.org}}
  • {{github|01org/tbb}}
  • {{Official website|software.intel.com/en-us/intel-tbb}} at Intel
{{Intel software}}{{Parallel Computing}}

7 : Concurrent programming libraries|Application programming interfaces|C++ programming language family|Generic programming|Threads (computing)|C++ libraries|Intel software

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/28 11:17:47