Intel's new Intel Parallel Studio 2011 targets Intel multicore platforms as well as Microsoft's latest Visual Studio development platform. It builds on Intel's open source Thread Building Blocks adding a host of new features including tight integration with Microsoft's Visual Studio 2010 including support for Microsoft's Parallel Computing support. This includes Microsoft's Concurrencty Runtime.
Parallel Studio 2011 (Fig. 1) consists of the following major components:
- Intel Parallel Advisor 2011
- Intel Parallel Composer 2011
- Intel Parallel Inspector 2011
- Intel Parallel Amplifier 2011
Parallel Studio is designed to support new as well as experienced C/C++ parallel programmers. The Parallel Advisor provides insight into existing applications while Parallel Composer provides the compiler and library support. Parallel Inspector exposes memory and threading details in addition to providing error checking services. Parallel Amplifier delivers profiling and analysis.
Intel Parallel Advisor 2011 (Fig. 3) provides a step-by-step processor and tool suite to help analyze an application and highlight those areas and methodologies that might benefit from parallelization. It does this by analyzing and annotating source code so developers can incorporate parallel constructs and methodologies. Parallel Advisor checks for suitability and it can also find conflicts that can prevent parallelization from providing a performance advantage. For example, it can find race conditions as well as highlight variables that should be privatized.
Much of the parallel support for Intel Parallel Composer is hidden in libraries but the compilers also handle parallel programming extensions as well. Right now, Parallel Studio's C/C++ compiler integrates with Microsoft's Visual Studio. In the future, other platforms and languages such as Fortran will be added to the mix. This component includes the pre-threaded and thread-safe libraries used by most applications.
Intel's Parallel Inspector targets memory and threading errors. It hooks into the runtime to provide insight into a parallel application. It can address serial as well as parallel code. The thread support is designed to highlight deadlock and race conditions with configurable call stack analysis. The diagnostic guidance support has a knowledge base that includes Thread Building Blocks, OpenMP and Microsoft's thread support.
Intel's Parallel Amplifier is another tool to analyze performance as well as indentify performance related problems. The Hotspot Analysis shows function calling sequences and call stack hot spots. The analysis is linked to the source code allowing developers to make changes based on information from the Parallel Amplifier tools. The system also checks for idle cores using a colorful GUI interface. The same is true for tracking resources and locks.
The Cilk Project started at MIT and was licensed by Cilk Arts that was purchased by Intel. The Intel Cilk++ SDK included the cilk_for, cilk_spawn, and cilk_sync keywords that are now supported by the Parallel Studio C/C++ compiler. These provide recursion and multithreading support. The latter uses a strict fork-join model with low overhead.
Threading Building Blocks (TBB) provides a C++ template library and runtime for shared-memory parallism. It includes generic concurrent containers that eliminate user locking mechasnims. It can use lock-free or fine-grain locking in a scalable environment. There are exception-safe mutexes designed to address a variety of parallel programming needs. TBB also provides a thread local storage abstraction that supports traversal and reduction algorithms.
Array Building Blocks (ABB) is an adjunct to TBB. ABB provides a C++ template library for data parallism built around, obviously, arrays. ABB works with any compiler unlike the Cilk Plus extensions that are provided by Intel's C/C++ compiler. This makes ABB more portable. It can handle regular, irregular and nested data.
Intel's Thread Building Blocks was a major leap forward in parallel programming. Parallel Studio 2011 is another significant step forward. It takes advantage of existing multicore platforms and it will have a big impact as many core platforms become common place. Parallel Studio does not address all multicore environments but it does cut a wide swath through the parallel programming space.