Intel® Threading Building Blocks (Intel® TBB) is a popular software C++ template library that simplifies the development of software applications running in parallel (key to any multicore computer). Intel® TBB extends C++ for parallelism in an easy to use and efficient manner. It is designed to work with any C++ compiler thus simplifying development of applications for multi-core systems. Intel® TBB is a C++ template library that adds parallel programming for C++ programmers. It uses generic programming to be efficient. Threading Building Blocks includes algorithms, highly concurrent containers, locks and atomic operations, a task scheduler and a scalable memory allocator. These components in Intel® TBB can be used individually or all together to ease C++ development for multi-core. Intel® TBB provides an abstraction for parallelism that avoids the low level programming inherent in the direct use of threading packages such as p-threads or Windows threads. It has programmers express tasks instead of threads. Intel® TBB facilitates scalable performance in a way that works across a variety of machines for today, and readies programs for tomorrow. It detects the number of cores on the hardware platform and makes the necessary adjustments as more cores are added to allow software to adapt. Thus, Intel® TBB more effectively takes advantage of multi-core hardware.
Currently there are no differences, and there are no plans to change that. We plan to maintain one source base and do builds for both from the same source base. Intel offers its standard commercial support for the purchased version of Intel® TBB, and for the open source version will refer people to the open source web site for FAQs, forums and the like for support.
The project is dedicated to supporting leading compilers, all OSes and all processors as a cornerstone objective. Up to date information on status is available on threadingbuildingblocks.org.
C++, like other popularly used languages, was not designed to express parallelism. Even Java with its support of threads does not offer a high enough level of abstraction to make parallel programming significantly easier. Fortunately, C++ is extensible using templates. Originally C++ did not address a number of things and the Standard Template Library (STL) was created to fill a need. Based on our experience with Intel® OpenMP, we understood well the need to extend C++ for more general parallelism. Developers liked the Intel® OpenMP concept, whereby they could get scalable performance without adding much new code, yet needed something that was more conducive to the object oriented/template based programming style of C++. Developers wanted us to do something about parallel containers, and algorithms – so templates were a perfect fit. The ‘generic programming’ style which STL uses – which allows components to be easily composed without giving up performance appealed a great deal to us. We settled on extending C++ in a fashion similar to how STL extended C++. Abstraction is important to developers. Using native threads, doing your own explicit thread management, is like assembly language for parallelism. Intel® TBB is the abstraction we need for many reasons. Programming for parallelism using native threads is tedious, error prone and not portable. It also is seldom as scalable as it could be, because high levels of scalability are more difficult to program.
Yes, many developers are using Intel® TBB today. Check out some of the testimonials. According to Evans Data Corporation's “Global Developer Population and Demographics Survey: Volume 1 2012”, Intel® TBB is the most used parallelization model behind Windows Threading.
Customer feedback regarding Intel® TBB, since Intel launched it in August 2006, has been hugely positive, with two exceptions. Customers told Intel they want to use Intel® TBB – because it is wonderful – but they needed two things: 1. EVERYWHERE: make it available on more OSes and for more processors (Intel® TBB 1.x supported Linux, Windows and Mac OS X on IA32, IA64 and Intel 64 processors [in other words: x86, Itanium and x86-64]). 2. FOREVER: make it permanent (while exclusively a proprietary product from Intel®– some feared depending on it for all parallel programming because it might cease to exist if Intel® cancelled the project) We concluded that adding staff to the project and open sourcing it (doing both, together) was the best solution to the problem. We also responded to customers who said it was important to continue to offer a commercial version and support from Intel.
Intel announced the creation of an open source project (threadingbuildingblocks.org ) for Intel® Threading Building Blocks (Intel® TBB) on July 24, 2007. Intel reiterated its commitment to making Intel® TBB a viable and strong option for expressing concurrency in C++ by announcing at the same time that it was adding people to this project. Intel® TBB is now available as an open source project under the GNU General Public License version two (GPLv2) with the (libstdc++) runtime exception.
We had certain objectives we wanted to meet before open sourcing. We wanted to be sure we perfect it as an easy and effective way to help real applications. Our focus is helping developers with C++ code they want to write for parallelism and scalability, or code they want to move to parallel systems. Waiting to release under open source gave us some time and feedback on what we needed to do with Intel® TBB.
Multi-core processors are nearly ubiquitous now. Software developers can program for concurrency in their application to take full advantage of multi-core processors. The importance of doing this only increases over time. A program deployed today may be running on quad-core processors or even systems with multiple quad-core processors. That same program, if it is used for 3 years, may eventually run on systems with 8 or 16 core processors or more. Intel® TBB helps ensure that applications can be written for the architectures of tomorrow while targeting the systems of today.
For more information, you can visit threadingbuildingblocks.org. The site includes Intel® TBB source code, documentation, user forums, blogs, podcasts, articles, white papers and support areas.
Yes. Intel continues to support the commercial version of Intel® Threading Building Blocks, which is available for $499. With this purchase, you will receive one year of product updates available at the Intel® Registration Center and one year of technical support from Intel® Premier Support, our interactive issue management and communication website. This premier support service allows you to submit questions to Intel engineers. The commercial version of Intel TBB is also included with Intel® C++ Composer XE as well as subsequent Intel compiler products such as Intel® Parallel Studio XE. More information on the commercial version of TBB is available at http://intel.ly/intel-tbb.
Intel® Threading Building Blocks received one of the 17th Annual Jolt Productivity Awards in the “Libraries, Components and Frameworks” category from Dr. Dobb’s Journal and Software Development Magazine in March 2007. Intel® TBB received a second Jolt Productivity Award in 2008, and a 2008 InfoWorld Best of Open Source Software (Bossie) award for best parallel programming developer tool.
We think so, very much. Because Intel® TBB abstracts away low level details, such as thread management, teaching can focus on fundamental concepts which are easily implemented and experienced using Intel® TBB. With multi-core process being so common, finding computers to run parallel programs is no longer difficult. We think parallelism is a concept which should be introduced very early in learning to program, and should be utilized at every level of teaching computer science. Teaching it within C++ allows focus to be placed primarily on concepts of parallelism and not exotic language design concepts. The programming environments are readily available including compilers and debuggers. We hope that persons using Intel® TBB in teaching will share their experiences so we may all benefit. Feel free to drop notes on the forum to share and as a way to propose how we can help foster using Intel® TBB in teaching parallel programming.
First and foremost, the book Intel Threading Building Blocks, by James Reinders, has been published by O’Reilly Media. The tutorial, examples and other documentation which come with the download are excellent as well.
Intel® offers select products in a non-commercial form, which makes them free to developers who are not being compensated. Intel® TBB had been part of that program, but with the advent of the open source version there is no longer a need for the non-commercial version. Moving forward, the Intel® TBB download available from the threadingbuildingblocks.org site will eliminate the need for a special non-commercial version of Intel® TBB.