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.
There are no differences between the commercial and the open source versions. We plan to maintain one source base and do builds for both commercial and open source from the same source base. Intel offers its Intel® Premier Support for the purchased version of Intel® TBB, and for the open source version we have the FAQs and Intel Threading Building Blocks forum 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 our testimonials and case studies here . 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.
Intel announced the creation of an open source project (threadingbuildingblocks.org ) for Intel® Threading Building Blocks (Intel® TBB) on July 24, 2007. Until August 2016 Intel® TBB was available as an open source project under the GNU General Public License version two (GPLv2) with the (libstdc++) runtime exception.As of September 6 2016 Intel® TBB is relicensed to a non-viral Apache v2.0 license.
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.
Yes. Intel continues to offer support though the commercial version of Intel® Threading Building Blocks, which is available in the Intel® Parallel Studio XE Suites and Intel System Studio Suites . 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. More information on the commercial version of TBB is available at the TBB product page. There is a free tools program where Intel® Threading Building Blocks is a part of and you get community support through this program.
Yes, Intel® TBB has an important role in teaching parallelism in schools. Intel has free programs focused specifically for academic researchers, students, educators and open source contributors where you get Intel® TBB and other libraries for free; 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. Feel free to drop notes on the forum to share and as a way to propose how else we can help foster using Intel® TBB in teaching parallel programming in academic setups.