Main Page Threading Building Blocks FAQ Home Page
General Questions about TBB
Reporting Issues with TBB
Contributing to TBB
What did Intel announce on July 24 2007?
Intel announced the creation of an open source project ( threadingbuildingblocks.org )for its multicore product Intel® Threading Building Blocks 2.0 (TBB). Intel reiterated its commitment to making 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.
TBB is now available as an open source project under the GNU General Public License version two (GPLv2) with the runtime exception.
Why is this significant?
Multi-core processors are nearly ubiquitous now. Software developers can program for concurrency in their application to take full advantage of multicore 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 Threading Building Blocks helps ensure that applications are can be written for the architectures of tomorrow while targeting the systems of today.
Why did you not open source originally?
We had certain objectives we wanted to meet before open sourcing. We wanted to be sure we perfect this 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. It also gave us time to prepare – and we are ready now!
Why open source now?
Customer feedback regarding TBB, since Intel launched it in August 2006, has been hugely positive, with two exceptions. Customers told Intel they want to use 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 prog ramming 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 important to continue to offer a commercial version and support from Intel.
What is TBB?
Intel® Threading Building Blocks (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 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, more effectively taking advantage of multi-core hardware.
Will Intel continue to offer support?
Yes. Intel continues to support the commercial version of Intel Threading Building Blocks 2.0, which is available for $299. This product includes one year of technical support, upgrades and new releases. The commercial version of Intel TBB is also included with the recently launched Intel® C++ Compiler Professional Editions 10.0.
More information on Threading Building Blocks is available at threadingbuildingblocks.org.
Why does C++ need this?
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 OpenMP, we understood well the need to extend C++ for more general parallelism. 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 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. 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.
How does version 2.0 (open source) differ from version 1.1 (the prior commercial release)?
Version 2.0 should be functionally identical to 1.1 except a few very minor bug fixes. We decided to name it 2.0 to make a ’clean start’ as an open source project. We changed the documentation in many places, and made significant changes in the Makefiles to help ready TBB for open source. These changes were internally very significant – hence the name change to 2.0.
Has TBB won any awards?
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.
Where do I download TBB?
TBB will be available in binary form (compiled library file with header source), and source form (source version of library file with header source).
Binary Form Software Location
Source Form Software Location
Are there any books planned to help developers better understand how to use TBB?
O’Reilly Media released a book in mid-July 2007 on Threading Building Blocks, written by James Reinders. It includes comments from many people, including a foreword by Alex Stepanov (father of the Standard Template Library) and an introduction by Arch Robison (lead developer of TBB). Half the book covers examples, which really make it an excellent resource for learning TBB.
What will be Intel's role going forward?
Intel engineers will act as the maintainers of the project, and help maintain a vision and passion for parallelism. The project is dedicated to supporting all compilers, all O Ses and all processors as a cornerstone for the project. Intel is very committed to the success of the project and has added more people to the project as well as committed ourselves to be responsive to inquiries and contributions.
What compilers, operating systems and processors are supported?
The project is dedicated to supporting all compilers, all OSes and all processors as a cornerstone objective of the project. Up to date information on status is available on the web site.
Will TBB be supported on the Solaris Operating System?
How will the commercial and open source versions differ?
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 TBB, and for the open source version will refer people to the open source web site for FAQs, forums and the like for support.
Are there products already using TBB or distributions distributing TBB?
Some of our customers will follow with announcement later this year when their products ship, there is nothing to announce today. Many Linux distributions will be shipping TBB in upcoming versions, we will post information on our Web site to reflect information as we become aware of it.
Where can I get more information on the TBB open source offering?
For more information, you can visit threadingbuildingblocks.org. The site includes TBB source code, documentation, user forums, blogs, podcasts, articles, white papers and support areas.
What happens to Intel’s non-commercial offerings?
Intel offers select products in a non-commercial form, which makes them free to developers who are not using them for profit. 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 TBB download available from the threadingbuildingblocks.org site will eliminate the need for a special non-comercial version of TBB.
Are you doing anything to help teach more people how to use the Threading Building Blocks?
First and foremost, a new book on 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.
Does TBB have a role in teaching parallelism in schools?
We think so, very much. Because TBB abstracts away low level details, such as thread management, teaching can focus on fundamental concepts which are easily implemented and experienced using 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 TBB in teaching will share their experiences so we may all benefit. Feel free to drop notes on the forum ( threadingbuildingblocks.org) to share and as a way to propose how we can help foster using TBB in teaching parallel programming.
Do you have any special programs for universities?
For a limited time, academic developers can receive a free, supported academic license of TBB by applying at intel.com/software/products/academic. A TBB teaching module is also part of Intel’s multi-core university curriculum.
What is the tera-scale program at Intel?
The Intel Tera–scale Computing Research Program is Intel’s R&D effort to scale today's dual–core and multi–core processors up to designs that have the tens or hundreds of energy–efficient cores with teraflops of compute capability. This is what will be needed to handle the terabytes of data of tomorrow’s emerging applications. This worldwide program includes more than 80 projects as well as industry and academic collaborations.
Intel believes multi-core to be the key to scaling performance and application capabilities while improving energy efficiency. Recently, Intel demonstrated an 80-core research processor capable of 1 trillion calculations per second while consuming the same amount of power as today’s desktop processors.
The 80-core demonstration, from the research side, shows that Intel is serious about scaling multi-core architectures. Intel can do this on the hardware side. Significant skepticism exists in the industry about moving software to large numbers of cores. The first steps to use multi-core are occurring today.
Creating software today with the ability to scale to more and more cores requires continued innovation including new software development tools such as TBB.
How is TBB related to the tera-scale program at Intel?
Tera-scale is research work which helps illuminate the challenges of moving to very high core counts in the future. At Intel, we have faith we can build such hardware, and that it will be programmable and quite useful. Nevertheless, there are many areas of research and development being pursued to make this reality.
Tera-scale research efforts at Intel have had an affect on TBB in two ways:
1. Directly contributing the Scalable Memory allocator code for TBB. This outstanding piece of technology came directly from Intel’s research team and makes TBB competitive with the best solutions in the industry for scalable memory allocation.
2. Intel research reinforces the importance of helping software move to a scalable model which is ready to take advantage of more cores automatically. Our vision is to avoid coding of programs directly for 2 or 4 cores, but rather adopt a scalable task programming model originally.
TBB bridges the present and the future: it works well for today's software and is well designed for scalability to many cores.
The tera-scale team at Intel has heralded the release of TBB into open source code as exactly the sort of solution which will help usher in a transition making tera-scale computing a little closer to reality. It will allow software developers (community, industry and academics) to more easily make the transition to significant levels of parallelism. The software is moving to concurrency to utilize hardware available now, and Intel is committed helping with the transition.
Can we expect more from the software products team as well as the tera-scale program at Intel for software developers?
Yes, without a doubt. But we’ll have to wait to see what we come up with. We will continue to provide solid and ready-to-deploy solutions from the software products team such as TBB and our other products for parallel programming, but we may make some research projects available for experimentation as well. Let’s see what we can provide in the future – these are exciting times for programming!
Is the license 'GPL v2' or 'GPL v2 or later'?
GPL v2. Later versions will be reviewed, when final, for future consideration.
Why did Intel choose v2 instead of v3 of GPL?
GPL v2 was current and widely accepted when we made our decision. GPL v3 is new and was not final when we made our decision on licensing. We are just starting to review v3, and we’ve n ot reached any decision at this time.
Is GPL v2 an open-source license?
Yes, see opensource.org/licenses/gpl-license.php.
What is GPL v2 with the runtime exception?
GPLv2 with the runtime exception is the license under which the source code of libstdc++ is distributed (see http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html). This ’runtime exception’ is therefore a standard for distributing template libraries – and that is why TBB uses it.
What if I find bugs in the TBB code licensed under GPL? Where do I report these?
Please visit threadingbuildingblocks.org. Please read the FAQ on Reporting Problems.