Wednesday, 11 February 2009

Intel opens multicore threads library

Intel has released a multicore development library under the "GPLv2 with runtime exception" license. Intel Threading Building Blocks is a cross-platform, portable library aimed at improving the performance of C++ applications on multicore processors, without requiring deep developer understanding of parallel programming theory.

Intel's Threading Building Blocks (TBB) comprises a small runtime of about 120KB, together with "template libraries" linked in at compile time. The libraries implement a task scheduler, memory allocator, and timing counter, along with various generic parallel algorithms, thread-safe containers, and synchronization primitives, according to the company.

Intel says 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." James Reinders, chief evangelist for Intel's software development products team, said that in practice, "TBB tends to do better, compared to hand-written code, unless it was hand-written by an expert in parallel programming who spends a fair amount of time writing it."

Reinders said that by releasing TBB under an open source license, Intel hopes to see the technology ported to additional architectures and operating systems. Currently, TBB is supported on about a dozen commercial Linux OSes, along with Apple Mac OS and Microsoft Windows. It supports the GNU Compiler Collection (GCC), and Intel's commercial compilers, but was designed to support "any compiler," Intel says. Hardware-wise, it supports currently shipping multi-core processors from Intel.


Intel Threading Building Blocks supported platforms
(Click to enlarge)

Reinders said Intel chose the GPLv2 with runtime exception because the GNU C++ libraries use the same license. Similar to the LGPL, the runtime exception prevents TBB's runtime from "infecting" applications with GPL licensing obligations. "We wanted to go with a proven, accepted license," he said.

Reinders said TBB can help developers adapt existing applications to perform well on multi-core processors. They simply choose parts of their C++ applications that could benefit most from parallelism -- searching and indexing functions, for instance -- and then re-write them around the function calls available in TBB. "In most cases, TBB's memory allocator is a drop-in replacement for malloc," he said.

TBB has been successfully used in a wide range of applications, according to Intel. It scales up to about 16 processors, and targets applications such as digital content creation, animation, financial services, electronic design and automation, and design simulation.

Availability

The open source-licensed version of Intel Threading Building Blocks is available now, here. TBB 2.0 will also continue to be available under a commercial license, priced at $300 and including a year of technical support, upgrades, and new releases. The commercial version is also included with the recently-launched Intel C++ Compiler Professional Editions 10.0.

No comments: