- What is Intel® Threading Building Blocks (Intel® TBB)?
- Intel TBB is a widely used C++ library for shared memory parallel programming and heterogeneous computing (intra-node distributed memory programming). The library provides a wide range of features for parallel programming including generic parallel algorithms, concurrent containers, a scalable memory allocator, work-stealing task scheduler, and low-level synchronization primitives. Intel TBB is a library-only solution for task-based parallelism. It does not require any special compiler support. It has ports to multiple architectures including Intel® architectures, Arm*, and Power Architecture*.
- What is parallelism?
By way of analogy, if you’re trying to cook a multicourse meal and all you have is a single-burner stove, you can only cook one part of the meal at a time. If you have a stove with four burners, you can cook four things at once, bringing them to the table all at the same time. Software parallelism is similar. There are different techniques used to achieve parallelism—threading is one of them. The idea is to take an application and, where possible, split up the program so different parts can run simultaneously on different processors in a multicore configuration. Then, part of the application brings all the parts together to present the application results.
Task-based parallelism is a mechanism to execute several work items (tasks) in parallel.
- What is threading?
- Threading is a kind of parallelism. It’s a technique used by software developers to decompose applications into parts that can be run simultaneously on a computer with multiple processors or multiple cores. Threaded applications run on a single computer, again with multiple cores, under the management of a single operating system.
- Why does C++ need Intel TBB?
C++, like other popularly used languages, was not designed to express parallelism. Fortunately, C++ is extensible using templates. Developers liked the 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 that 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.
- Does Intel charge run-time fees or royalties for its libraries?
- There are no run-time fees or royalties.
- Are there analysis tools that understand the semantics of Intel TBB?
- Yes. Applications threaded with Intel TBB can be analyzed with Intel® VTune™ Amplifier and Intel® Inspector. Intel® Advisor, available in any Intel® Parallel Studio XE product, can help find regions with the greatest performance potential from parallelism.
- Where can I get Intel TBB?
- Intel TBB is offered through Intel® Parallel Studio XE, Intel® System Studio, and for free through our community licensing program and also as open source software under an Apache* 2.0 license.
- Are there any books to help developers better understand how to use Intel TBB?
Yes. In Multithreading for Visual Effects, several authors from DreamWorks Animation*, Pixar*, Side Effects Software*, Advanced Micro Devices, and Intel (James Reinders) wrote a book based on the Siggraph 2013 course Multithreading in Visual Effects. The material in the book is greatly expanded and updated from the course material.
The book Intel Threading Building Blocks by James Reinders was published by O’Reilly Media. The tutorial, examples, and other documentation that come with the download are excellent resources.
- Where can I get more information on the Intel TBB open source offering?
- Visit threadingbuildingblocks.org for Intel TBB source code, documentation, user forums, blogs, podcasts, articles, white papers, and support areas.
For all other licensing related questions like redistributables, royalty fees, and licensing terms, see Licensing FAQ.