This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Multicore Desktop Programming with Intel Threading Building Blocks
January/February 2011 (vol. 28 no. 1)
pp. 23-31
Wooyoung Kim, Intel
Michael Voss, Intel
Writing a correct parallel program is difficult; writing a highly modular parallel program that performs well in a multiprogrammed environment is even more so. Intel Threading Building Blocks (Intel TBB), a key component of Intel Parallel Building Blocks , is a widely used C++ template library that helps developers achieve this goal. The Intel TBB task scheduler uses a process-wide thread pool to establish a composable execution environment that balances a load while quickly adapting to changes in resource availability. Building on top of the task scheduler, the library implements prepackaged, highly tuned algorithms for frequently used parallel idioms. It also provides several concurrent containers and useful, low-level synchronization constructs to help developers safely and efficiently manage their parallel application's data.

1. "A Quick, Easy and Reliable Way to Improve Threaded Performance: Intel Cilk Plus," Intel, 2010; http://software.intel.com/en-us/articles intel-cilk-plus.
2. "Sophisticated Library for Vector Parallelism: Intel Array Building Blocks," Intel, 2010; http://software.intel.com/en-us/articles intel-array-building-blocks.
3. "Deliver Scalable and Portable Parallel Code: Intel Threading Building Blocks," Intel, 2010; http://software.intel.com/en-usintel-tbb.
4. "Intel Threading Building Blocks 3.0 for Open Source," Intel, 2010; www.threadingbuildingblocks.org.
5. M. Frigo, C.E. Leiserson, and K.H. Randall, "The Implementation of the Cilk-5 Multithreaded Language," Proc. ACM SIGPLAN 1998 Conf. Programming Language Design and Implementation (PLDI 99), ACM Press, 1998, pp. 212–223.
6. Programming Languages − C++, Int'l Org. for Standardization, Mar. 2010; www.open-std.org/JTC1/SC22/WG21/docs/papers/ 2010n3092.pdf
7. Intel Threading Building Blocks Reference Manual, Intel, 2010; http://software.intel.com/en-us/articles/intel-threading-building-blocks-reference-pdf.
8. A. Robison, M. Voss, and A. Kukanov, "Optimization via Reflection on Work Stealing in TBB," Proc. 2008 IEEE Int'l Symp. Parallel and Distributed Processing (IPDPS 08), IEEE Press, 2008, pp. 1–8.
9. S. MacDonald, D. Szafron, and J. Schaeffer, "Rethinking the Pipeline as Object-Oriented States with Transformations," Proc. 9th Int'l Workshop High-Level Parallel Programming Models and Supportive Environments (HIPS 04), IEEE CS Press, 2004, pp. 12–21.
10. A. Marochko, "TBB Containers vs. STL. Functionality Rift," blog, Intel, 13 Oct. 2008; http://software.intel.com/en-us/blogs/2008/ 10/13tbb-containers-vs-stl-functionality-rift.
11. Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 3A: System Programming Guide, Part 1, Intel, 2010; www.intel.com/Assets/PDF/manual253668.pdf.
12. P. Sewell et al., "x86-TSO: A Rigorous and Usable Programmer's Model for x86 Multiprocessors," Comm. ACM, vol. 53, no. 7, 2010, pp. 89–97.
13. G.V. Wilson, "Assessing the Usability of Parallel Programming Systems: The Cowichan Problems," Proc. IFIP Working Conf. Programming Environments for Massively Parallel Distributed Systems, 1994, pp. 183–193.
14. J. Stone, "Tachyon Parallel / Multiprocessor Ray Tracing System," Sept. 2010; http://jedi.ks.uiuc.edu/~johnsraytracer.
15. E.W. Weisstein, "Sieve of Eratosthenes," Wolfram Research, 2010; http://mathworld.wolfram.comSieveofEratosthenes.html.
1. M. Frigo, C.E. Leiserson, and K.H. Randall, "The Implementation of the Cilk-5 Multithreaded Language," Proc. ACM SIGPLAN 1998 Conf. Programming Language Design and Implementation (PLDI 99), ACM Press, 1998, pp. 212–223.
2. M. Frigo et al., "Reducers and Other Cilk++ Hyperobjects," Proc. 21st Ann. Symp. Parallelism in Algorithms and Architectures, ACM Press, 2009, pp. 79–90.
3. "A Quick, Easy and Reliable Way to Improve Threaded Performance: Intel Cilk Plus," Intel, 2010; http://software.intel.com/en-us/articles intel-cilk-plus.
4. "Sophisticated Library for Vector Parallelism: Intel Array Building Blocks," Intel, 2010; http://software.intel.com/en-us/articles intel-array-building-blocks.
5. A. Ghuloum et al., "Future-Proof Data Parallel Algorithms and Software on Intel Multi-core Architecture," Intel Technology J., vol. 11, no. 4, 2007, pp. 333–347.
6. OpenMP Application Program Interface Ver. 3.0, OpenMP Architecture Review Board, May 2008; www.openmp.org/mp-documentsspec30.pdf.
7. "Introducing Blocks and Grand Central Dispatch," Apple, 2010; http://developer.apple.com/library/mac/#featuredarticles/ BlocksGCD.

Index Terms:
multicore programming, threading libraries, parallel-programming models, software engineering, programming, parallel programming
Citation:
Wooyoung Kim, Michael Voss, "Multicore Desktop Programming with Intel Threading Building Blocks," IEEE Software, vol. 28, no. 1, pp. 23-31, Jan.-Feb. 2011, doi:10.1109/MS.2011.12
Usage of this product signifies your acceptance of the Terms of Use.