INTEL THREADING BUILDING BLOCKS
'Intel Threading Building Blocks' (also known as 'TBB') describes a C++ template library for writing parallel programs.
TBB consists of data structures and algorithms that aim to simplify parallel programming in C++ by avoiding requiring a programmer to use native threading packages such as POSIX threads or Windows threads, or even the portable Boost Threads.
TBB uses templates thereby relying on compile-time polymorphism that is often more efficient than traditional run-time polymorphism. Modern C++ compilers are tuned to minimize any abstraction penalty arising from heavy use of templates such as STL and Intel Threading Building Blocks.
Threading Building Blocks is a collection of solutions needed for a parallel program:
★ Basic Algorithms: parallel_for, parallel_reduce, parallel_scan
★ Advanced Algorithms: parallel_while, pipeline, parallel_sort
★ Containers: concurrent_queue, concurrent_vector, concurrent_hash_map
★ Scalable Memory Allocation: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator, cache_aligned_allocator
★ Mutual exclusion: mutexspin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_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
Version 1.0 was introduced by Intel on August 29, 2006, the year after the introduction of Intel's first dual-core x86 processor, the Pentium D.
Version 1.1 was introduced on April 10, 2007. This version introduced auto_partitioner which offered an automatic alternative to specifing a grainsize parameter to estimate the best granularity for your tasks.
Version 1.1 was added to Intel C++ Compiler 10.0 with the new Professional Edition on June 5, 2007.
Version 2.0 was introduced on July 24, 2007. This version included the release of the source code, and the creation of an open source project osstbb.intel.org. The license used for open source is the same as the one used by the GNU Compiler Collection C++ standard library, a GPLv2 with an "runtime exception" (because of being template heavy code that usually becomes part of the executable after compilation). TBB is still available in a commercial version (without source code) with support but with no differences in functionality from the open source version.
The TBB commercial release 2.0 supports Microsoft Windows (XP or newer), Mac OS X (>=10.4.4) and Linux using compilers Visual C++ (>=7.1), Intel C++ Compiler (>=9.0) or GNU Compiler Collection (gcc) [1]. Additionally, the open source downloads build TBB for Solaris and FreeBSD.
Open Source Project:
★ Open Source Project: Threading Building Blocks
The definitive book on TBB - an O'Reilly Nutshell book:
★ Reinders, James (2007, July). Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism (Paperback). California: O'Reilly Media, ISBN 978-0-596-51480-8.
More on TBB algorithms:
★ Voss, M. (2006, October). "Demystify Scalable Parallelism with Intel Threading Building Blocks' Generic Parallel Algorithms."
More on TBB containers:
★ Voss, M. (2006, December). "Enable Safe, Scalable Parallelism with Intel Threading Building Blocks' Concurrent Containers."
More on the TBB scalable memory allocator:
★ Hudson, R. L., B. Saha, et al. (2006, June). "McRT-Malloc: a scalable transactional memory allocator." Proceedings of the 2006 International Symposium on Memory Management. New York: ACM Press, 74-83.
Intel product pages:
★ Intel Threading Building Blocks
★ Standard Template Library
★ Parallel computing
★ Multi-core (computing)
★ An, P., A. Jula, et al. (2003). "STAPL: An Adaptive, Generic Parallel C++ Library." Workshop on Language and Compilers for Parallel Computing, 2001. Lecture Notes in Computer Science 2624, 193-208.
★ Austern, M.H., R.A. Towle, and A.A. Stepanov (1996). "Range partition adaptors: a mechanism for parallelizing STL." ACM SIGAPP Applied Computing Review. 4, 1, 5-6. and an open-source implementation : RPA.
★ Blumofe, R. D., C. F. Joerg, et al. (1996). "Cilk: An Efficient Multithreaded Runtime System." Proceedings of the 5th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, 207-216. see also Cilk
★ Garcia, R., J. Järvi, et al. (2003, October). "A Comparative Study of Language Support for Generic Programming." Proceedings of the 2003 ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications.
★ Halbherr, M., Y. Zhou, and Joerg, C. F. (1994, September). "MIMD-style parallel programming with continuation-passing threads." Proceedings of the 2nd International Workshop on Massive Parallelism: Hardware, Software, and Applications, Capri, Italy.
★ Mattson, T. G., B. A. Sanders, and B. L. Massingill (2004). Patterns for Parallel Programming. Reading, MA: Addison-Wesley.
★ Musser, D.R., and A.A. Stepanov (1994). "Algorithm-Oriented Generic Libraries." Software-Practice and Experience, 24(7), 623-642.
★ Musser, D. R., G. J. Derge, and A. Saini, with foreword by Alexander Stepanov (2001). STL Tutorial and Reference Guide, Second Edition: C++ Programming with the Standard Template Library, Boston, MA: Addison-Wesley, 2001. PDF
★ Plauger, P. J., M. Lee, et al (2000). C++ Standard Template Library, Prentice Hall.
★ Rauchwerger, L., Arzu, F., and Ouchi K. (1998, May). "Standard Templates Adaptive Parallel Library, Proceedings of the 4th International Workshop on Languages, Compilers,and Run-Time Systems for Scalable Computers (LCR), Pittsburgh, PA. Also Lecture Notes in Computer Science, 1511, Spinger-Verlag, 1998, pp.402-410.
★ Robison, A. D. (2006). "A Proposal to Add Parallel Iteration to the Standard Library."
★ Su, E., X. Tian, et al. (2002, September). "Compiler Support of the Workqueuing Execution Model for Intel SMP Architectures." Fourth European Workshop on OpenMP, Rome.
★ Sutter, H. (2005, January). "The Concurrency Revolution." Dr. Dobb's Journal.
TBB consists of data structures and algorithms that aim to simplify parallel programming in C++ by avoiding requiring a programmer to use native threading packages such as POSIX threads or Windows threads, or even the portable Boost Threads.
TBB uses templates thereby relying on compile-time polymorphism that is often more efficient than traditional run-time polymorphism. Modern C++ compilers are tuned to minimize any abstraction penalty arising from heavy use of templates such as STL and Intel Threading Building Blocks.
| Contents |
| Library Contents |
| History |
| Systems Supported (Known Ports) |
| See Also |
| Related Reading |
Library Contents
Threading Building Blocks is a collection of solutions needed for a parallel program:
★ Basic Algorithms: parallel_for, parallel_reduce, parallel_scan
★ Advanced Algorithms: parallel_while, pipeline, parallel_sort
★ Containers: concurrent_queue, concurrent_vector, concurrent_hash_map
★ Scalable Memory Allocation: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator, cache_aligned_allocator
★ Mutual exclusion: mutexspin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_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
History
Version 1.0 was introduced by Intel on August 29, 2006, the year after the introduction of Intel's first dual-core x86 processor, the Pentium D.
Version 1.1 was introduced on April 10, 2007. This version introduced auto_partitioner which offered an automatic alternative to specifing a grainsize parameter to estimate the best granularity for your tasks.
Version 1.1 was added to Intel C++ Compiler 10.0 with the new Professional Edition on June 5, 2007.
Version 2.0 was introduced on July 24, 2007. This version included the release of the source code, and the creation of an open source project osstbb.intel.org. The license used for open source is the same as the one used by the GNU Compiler Collection C++ standard library, a GPLv2 with an "runtime exception" (because of being template heavy code that usually becomes part of the executable after compilation). TBB is still available in a commercial version (without source code) with support but with no differences in functionality from the open source version.
Systems Supported (Known Ports)
The TBB commercial release 2.0 supports Microsoft Windows (XP or newer), Mac OS X (>=10.4.4) and Linux using compilers Visual C++ (>=7.1), Intel C++ Compiler (>=9.0) or GNU Compiler Collection (gcc) [1]. Additionally, the open source downloads build TBB for Solaris and FreeBSD.
See Also
Open Source Project:
★ Open Source Project: Threading Building Blocks
The definitive book on TBB - an O'Reilly Nutshell book:
★ Reinders, James (2007, July). Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism (Paperback). California: O'Reilly Media, ISBN 978-0-596-51480-8.
More on TBB algorithms:
★ Voss, M. (2006, October). "Demystify Scalable Parallelism with Intel Threading Building Blocks' Generic Parallel Algorithms."
More on TBB containers:
★ Voss, M. (2006, December). "Enable Safe, Scalable Parallelism with Intel Threading Building Blocks' Concurrent Containers."
More on the TBB scalable memory allocator:
★ Hudson, R. L., B. Saha, et al. (2006, June). "McRT-Malloc: a scalable transactional memory allocator." Proceedings of the 2006 International Symposium on Memory Management. New York: ACM Press, 74-83.
Intel product pages:
★ Intel Threading Building Blocks
Related Reading
★ Standard Template Library
★ Parallel computing
★ Multi-core (computing)
★ An, P., A. Jula, et al. (2003). "STAPL: An Adaptive, Generic Parallel C++ Library." Workshop on Language and Compilers for Parallel Computing, 2001. Lecture Notes in Computer Science 2624, 193-208.
★ Austern, M.H., R.A. Towle, and A.A. Stepanov (1996). "Range partition adaptors: a mechanism for parallelizing STL." ACM SIGAPP Applied Computing Review. 4, 1, 5-6. and an open-source implementation : RPA.
★ Blumofe, R. D., C. F. Joerg, et al. (1996). "Cilk: An Efficient Multithreaded Runtime System." Proceedings of the 5th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, 207-216. see also Cilk
★ Garcia, R., J. Järvi, et al. (2003, October). "A Comparative Study of Language Support for Generic Programming." Proceedings of the 2003 ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications.
★ Halbherr, M., Y. Zhou, and Joerg, C. F. (1994, September). "MIMD-style parallel programming with continuation-passing threads." Proceedings of the 2nd International Workshop on Massive Parallelism: Hardware, Software, and Applications, Capri, Italy.
★ Mattson, T. G., B. A. Sanders, and B. L. Massingill (2004). Patterns for Parallel Programming. Reading, MA: Addison-Wesley.
★ Musser, D.R., and A.A. Stepanov (1994). "Algorithm-Oriented Generic Libraries." Software-Practice and Experience, 24(7), 623-642.
★ Musser, D. R., G. J. Derge, and A. Saini, with foreword by Alexander Stepanov (2001). STL Tutorial and Reference Guide, Second Edition: C++ Programming with the Standard Template Library, Boston, MA: Addison-Wesley, 2001. PDF
★ Plauger, P. J., M. Lee, et al (2000). C++ Standard Template Library, Prentice Hall.
★ Rauchwerger, L., Arzu, F., and Ouchi K. (1998, May). "Standard Templates Adaptive Parallel Library, Proceedings of the 4th International Workshop on Languages, Compilers,and Run-Time Systems for Scalable Computers (LCR), Pittsburgh, PA. Also Lecture Notes in Computer Science, 1511, Spinger-Verlag, 1998, pp.402-410.
★ Robison, A. D. (2006). "A Proposal to Add Parallel Iteration to the Standard Library."
★ Su, E., X. Tian, et al. (2002, September). "Compiler Support of the Workqueuing Execution Model for Intel SMP Architectures." Fourth European Workshop on OpenMP, Rome.
★ Sutter, H. (2005, January). "The Concurrency Revolution." Dr. Dobb's Journal.
This article provided by Wikipedia. To edit the contents of this article, click here for original source.
psst.. try this: add to faves

العربية
中国
Français
Deutsch
Ελληνική
हिन्दी
Italiano
日本語
Português
Русский
Español