Programming in Parallel
Reinders also floated the possibility of Java and .Net versions of TBB in the future. "While our main commitment is making sure we do well with C++, we think that the concepts of abstracting parallelism, of having a very sophisticated runtime to handle all the mapping of tasks on the threads, those core ideas of what we have in threading building blocks could be applied to .Net and Java," he said. Now that the product has been open-sourced, the hope is that more people will look at that and whether it is a good idea or not, he said, adding that Intel wanted to gauge the level of interest in, potential usage of and possible contribution to, such a project. How can developers control complexity? Click here to read more.As the world has already moved to multicore processing, programmers need to start thinking about taking a single program and having it take advantage of multiple processors, he said. But the challenge is taking C++ and extending it to allow every one of those programmers to do parallelism without having to abandon that language, as well as getting it to an appropriate level of abstraction. "Intel TBB 2.0 gets you there," he said. Some existing users, like Marc Snir, head of the Computer Science Department at the University of Illinois at Urbana-Champaign, agree with that claim. "TBB promises to change how parallel programming is done in C++," Snir said. Intel TBB uses generic programming to be efficient, but lets programmers express tasks instead of threads, allowing scalable programs at a fraction of the developer effort required for C++ with threading packages, he said. The software also 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. AMD is readying its quad-core Opteron processor for shipping in August. Will the new chip slow Intels momentum? Click here to read more. It is also designed to work with any C++ compiler, while its building blocks for threading can be used as a whole or in pieces, and co-exist with raw threads and OpenMP, which simplifies the development of applications for multicore systems, Reinders said. The software also detects the number of cores on the hardware platform and makes the necessary adjustments to allow the software to adapt as more cores are added. TBB is currently used on a wide variety of C++ applications, particularly ones where scalable performance is important, such as content creation, animation, financial services, electronic design, and automation and design simulation, he said. A number of customers like Martin Watt, senior software engineer at Autodesk, headquartered in San Rafael, Calif., are active in providing product feedback to Intel. "We used to say make it right, then make it fast. We cant do that anymore. TBB lets us design for correctness and speed up front," he said. Among the key benefits of TBB 2.0 are its ability to abstract parallelism without a loss of performance, that it is easier to program and maintain, and that it allows generic programming for performance and portability, Reinders said. The product coexists with native threads in Windows, Posix and OpenMP, and supports 32-bit and 64-bit platforms as well as Intel, GNU and Microsoft compilers. It is portable across the Windows, Linux and Mac OS X platforms and supports the Intel Thread Checker and Profiler tools, he said. Looking forward, Reinders said he expects to see a lot of usage by both open-source projects and distributions and closed-source projects, as well as many more new ports and more binaries, so it becomes truly ubiquitous. Check out eWEEK.coms for the latest open-source news, reviews and analysis.
"We are interested in seeing where that takes us, and if leadership emerges in the community to take this to Java or .Net, that will be a big factor in determining if we do it," Reinders said.