Intel has released its Intel Threading Building Blocks software as open source. We recently had the opportunity to talk with James Reinders, a senior engineer, chief evangelist of Intel software products, and author of the just-released Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism about this move.
DDJ: James, the Intel Threading Building Blocks software is being open sourced. Can you tell us what the Intel Threading Building Blocks software is and why it is becoming open source?
JR: Intel Threading Building Blocks is a C++ template library that provides an excellent way to program for multi-core parallelism for C++. Since we released it in August 2006 the responses have been overwhelmingly positive -- we think we’ve really hit upon a key way to advance C++. That said, we had two requests consistently from people considering switching to TBB:
- Make it available on more operating systems, more processors, and all C++ compilers.
- The need to be comfortable that TBB will be available forever.
These are both reasonable requests for people choosing TBB as the exclusive way to code parallelism. We felt that expanding our team and open sourcing TBB together solved these requests best. Note my emphasis on the need for Intel to be committed to this with more people. We know every strong open source project starts at the core -- and we are committing to that. We are not just open sourcing this and “hoping” the community will make more happen. Some of that will occur -- but we have taken many steps already ourselves (the download will build for G5 processors on Mac OS X, Solaris OS, FreeBSD OS… we’ll be adding more within the next few months -- ourselves and with help from the community).
DDJ: The focus at this point is on C++. Why C++ and what about other languages (like Java) or platforms (like .NET)?
JR: C++ forms the core of so much programming it was an obvious first choice for us. Not just because of its wide spread usage -- but because Java and .NET are used in server environments a great deal where parallelism is an every day occurrence because of running multiple processes to deal with multiple connections and other parallelism. That means the urgency for parallelism solutions on Java and .NET is less than C++. I’d like to do everything at once and tackle Java and .NET now, but since we cannot, I feel good about the decision to start with C++. Another attractive thing, as well, was templates in C++ as an efficient and accepted method to extend C++. We are very interested in dialog about whether TBB is a good thing to consider for .NET and Java. I expect some lively discussion. For now, we are strongly focused on C++ and I’m sure that will provide us some time for dialog on .NET and Java.
DDJ: I read a quote by Alexander Stepanov, the creator of STL, who said that "Threading Building Blocks... could become a basis for the concurrency dimension of the C++ standard library." That seems a pretty strong statement. Can you elaborate?
JR: We are very grateful for the positive feedback from Alexander Stepanov and Sean Parent at Adobe. What we are doing is not easy work, and neither was STL. About a decade ago, STL made C++ a better language. STL really paved the way for generic programming to be a key part of C++. Stepanov and his collaborators were real pioneers and have left their mark. We feel strongly that generic programming with template libraries represents the right way to extend C++ for parallelism. We are also big fans of generic programming. It’s not surprising that Stepanov is a fan of templates and generic programming too.
Template libraries represent a solution where we are not expecting miracles from the compiler, we are making the programming job easier and more predictable, and we get great performance. It worked for STL, and I think it will work for parallelism.
STL was made more serious, and more widely used, when Stepanov managed to have HP (where he worked then) release the source code. Releasing it was important. Community involvement changed STL on the path to standardization -- so we know it is important to get real feedback and adjust based on the feedback. We think TBB is a great start, and we can hardly wait to see what broader input and innovation will help bring for TBB and therefore for C++. Hopefully by the middle of the next decade we’ll understand what the right permanent standard would be. I don’t think we should rush, because we will need to live with it a long time. TBB is ready now -- for usage and feedback. That seems like the right place to be now. User feedback is like gold for a project of this magnitude. We look forward to feedback from users to guide the future of TBB.
DDJ: If readers want to find out more about parallelism in general and Threaded Building Blocks in particular, is there a website you can point them to?
JR: Yes, Threadingbuildingblocks.org is a great starting point, we have links to other favorite points there as well -- and readers can suggest more (or mention them in the forums) as well.