The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.01 - January/February (2011 vol.28)
pp: 23-31
Wooyoung Kim , Intel
Michael Voss , Intel
ABSTRACT
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.
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, January/February 2011, doi:10.1109/MS.2011.12
REFERENCES
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.
21 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool