This week Intel announced that it has begun shipping what is probably the most significant new tool in parallel computing to come along in quite a while: Parallel Studio. Intel began talking about Parallel Studio back in August of last year, and released a beta version in February.
So, what is it? Parallel Studio is a set of plug-ins for Microsoft’s Visual Studio integrated development environment (IDE) for Windows. This tells you a lot about where the tool is aimed: at C and C++ developers of applications for a single multicore desktop where shared memory models (like OpenMP and threading) are relevant. It is also aimed at non-experts in parallel computing, providing tools to help with the what of parallel coding — the actual development — as well as the where and how.
Intel obviously has a very large motivation to help developers get the most out of its chips, and the largest number of chips head out the door to consumers. Even as we’ve accelerated toward deployment of more complex multicore processors, the computer science and IT communities have collectively decried the lack of tools and education among the millions of programmers who are now faced with re-engineering their sequential applications for at least dozens of cores (more if they don’t want to do it again in 18 months). Intel has stepped up to the plate with a whole host of efforts to help bridge the skills gap: it is funding basic research through its Universal Parallel Computing Research Centers, providing curriculum support material to professors all over the world to help train the next generation workforce, teaming up with other companies to provide large-scale computational test beds, and developing tools like Ct and Threading Building Blocks.
Each of these is part of Intel’s big picture strategy for parallel computing. But the bread and butter of this revolution in skills development today is Parallel Studio. Parallel Studio consists of three production-quality tools that address the entire lifecycle of parallel application development, from coding and debugging to tuning.
Parallel Composer is where code gets written in Parallel Studio (Intel has posted videos that show off the features of Composer on its Web site). It supports application development in C and C++ using Intel’s Threading Building Blocks and OpenMP, and supports Windows own threading tools, which could be important if you are using a library or have an existing code base. Composer strongly adopts the Visual Studio way of doing things, so there is all the semantic support for parallel programming you’d expect from an IDE on Windows.
Parallel Inspector is the debugging center of the suite (video feature walkthroughs here). Chief Evangelist and Director of Marketing for Intel’s Software Development Products, James Reinders is especially keen on the automated deadlock and race condition detection that happens through runtime observation of the applications during execution. Inspector finds these problems by monitoring all memory accesses by the various threads, and watching for two threads that target the same memory location for modification. Reinders explains that this can be especially powerful for finding latent faults — conditions where the code works fine on your system, but fails in unexpected ways after it ships out to thousands of users. When I asked him for some feedback about what they had gotten out of the beta, he said that beta users were very enthusiastic about having access to a thread-safe memory checker, and as a result they put in extra effort to make sure that Inspector was up to snuff.
The final shipping piece of the Parallel Studio suite is Parallel Amplifier (click here for videos). Amplifier helps developers find bottlenecks in their code, and tune it for scalable multicore performance. Amplifier builds upon the experience of VTune, a powerful but hard-to-use tool Intel has offered for more than a decade. Amplifier utilizes a new user interface that gained popularity after being introduced several years ago at WhatIf.Intel.com. Although they are bundled as a suite, you can buy the individual components separately and the tools can work independently and with tools from other vendors.
Design for non-experts is obviously an absolute necessity for Parallel Studio at this point in the adoption of multicore processors. Reinders says that throughout the beta program the product team was very sensitive to any findings that pointed to workflow or design features in the product that were non-intuitive for users. They conducted a series of live tests, watching users install and use the software, noting where users seemed to get stuck and finding opportunities to make the next step a little more obvious.
The piece of the puzzle that Intel is still working on is Parallel Advisor, released this week as a free download called Parallel Advisor Lite (which is a little ahead of the schedule Reinders briefed me on back in August of last year for this tool; note that although it is free you’ve got to have Parallel Studio in order to use it). Advisor is an interesting piece of technology that is designed to analyze existing sequential code and advise developers of opportune places to add parallelism, and to offer advice about how to go about it.
What is the path for Parallel Studio developers off the desktop and onto distributed memory clusters? Reinders points to the company’s extensive portfolio of compilers and performance products for cluster and HPC developers on Linux platforms. He explains that Parallel Studio is designed for developers for whom “parallelism is a piece of their job, not an all-consuming passion,” and right now Parallel Studio leaves off where MPI begins, even on Windows clusters. Still, Reinders does say that parts of the suite will migrate to Intel’s other tools for clusters and other operating systems where it makes sense, and this is definitely a good thing for our community.