Moving to a multi-core world means applications will have to be written in a different manner, and as such, Intel has introduced three new utilities to make that process simpler.
Until recently, CPU makers like Intel
simply increased the CPU clock speed to improve performance, and every application ran faster for it.
But the new strategy is multi-core, which is the same as symmetric multiprocessing (SMP), the old process of putting two or more physical CPUs into one computer. Thanks to advances in chip fabrication, now you can put two (dual-core) or more cores in one physical chip rather than use multiple chips. Sun already ships servers based on its eight-core UltraSparc processor.
Whatever the manufacturing process or marketing buzzword, the same problems that kept SMP from wide use still bother multi-core, and that is the great difficulty in programming multithreaded applications.
“Most programmers think in a linear fashion, not a parallel fashion,” said Nathan Brookwood, veteran CPU market analyst with Insight64. “So when they try to fit their apps to a multithreaded implementation, it’s hard to do conceptually and it’s hard to debug. The tools Intel is providing is helping in both of those aspects.”
In a survey of programmers, Intel found that almost 80 percent of developers were working on at least one multi-threaded application, but they didn’t have the tools or the experience, which made the going rough.
“Software tools haven’t made that [multithreading] leap yet, which makes taking advantage of threads much more difficult,” said James Reinders, marketing director for Intel’s Developer Products division. “We want to make it easier to program and not force the programmer do explicit thread management.”
Of the three tools, only one is brand new. Thread Profiler 3.0 and Thread Checker 3.0 are the latest iterations of existing products while Threading Building Blocks is an entirely new offering.
Intel Threading Building Blocks 1.0 is a C++ runtime library that simplifies adding multithreading to an application by hiding the work needed to assign threads to the cores. Multithreading is possible now with OpenMP or Windows Threads, but neither is particularly easy to use.
Applications written with Threading Building Blocks automatically recognize the number of available cores and adjust performance accordingly. That way, an application can run on a dual-core or eight-core machine without requiring modification.
Thread Checker 3.0 does just what its name implies, it checks threads to look for potential errors. This new version now supports 64-bit applications on Intel hardware, so developers can check apps for both their 32- and 64-bit applications, and supports integration with Microsoft’s
Visual Studio 2005.
Thread Profiler 3.0 examines how threads interact and looks for potential bottlenecks or other performance issues. It examines both code and binaries for areas where code is not optimally parallelized.
Reinders said these tools make the problem of parallelism a lot more approachable, especially for someone new to parallelism.
“There’s a lot to learn how to make a thread,” he said. “We make a lot of that complication go away when we abstract it.”
Intel Threading Building Blocks 1.0, Intel Thread Checker 3.0 and Intel Thread Profiler 3.0 are all available now. Threading Building Blocks and Thread Profiler are each priced at $299 for each product, while Thread Checker for Windows is $999 and Thread Checker for Linux, available in command-line usage only, is $499.