Parallel Development: Fast Code on GPUs
Microsoft announced a new programming model to support data parallelism and concurrency on local General Purpose GPUs and APUs and, at some point, remote compute clouds. A new language extension, C++ Accelerated Massive Parallelism (C++ AMP), and related tooling are expected in the next version of Visual C++ with previews of the technology likely before the end of the year. According to the Microsoft C++ AMP team:
Developers will get an STL-like library as part of the existing concurrency namespace (whose Parallel Patterns Library – PPL- and its Concurrency Runtime – ConcRT- are also being enhanced in the next version of Visual C++) in a way that developers won't need to learn a different syntax, nor use a different compiler.
The new API is based on native C++ and designed to bring heterogeneous hardware programmability to mainstream developers. Visual Studio vNext is slated to support editing, debugging and profiling of C++ AMP code to enable developers to increase computational performance of data parallelism algorithms on GPUs and APUs beyond what is offered by multicore CPUs.
The intent is to make C++ AMP an open specification that any compiler can implement, according to Microsoft Senior Vice President Soma S. Somasegar, who announced the new programming model and Visual Studio tooling in his blog last week. Microsoft's initial implementation of C++ AMP is built on Windows DirectX and uses the DirectX11 DirectCompute subset of APIs.
By building on the Windows DirectX platform, our implementation of C++ AMP allows you to target hardware from all the major hardware vendors. We expect that it will be part of the next Visual C++ compiler and fully integrated in the next release of Visual Studio experience.
Herb Sutter, a Microsoft software architect and lead designer for the C++/CLI and the upcoming extensions for Visual C++, introduced C++ AMP during his keynote at AMD Fusion Developer Summit 11 on June 15th. AMD and Nvidia have announced plans to support C++ AMP.
Sutter outlines Microsoft's reasons for introducing C++ AMP in his June 16 blog posting. A major reason is to provide native C++ support to developers instead of C or some derivative of C, according to Sutter. This may explain why Microsoft is introducing its own language extension instead of supporting an open, cross-platform parallel programming standard for heterogeneous systems such as OpenCL (Open Computing Language), which is based on the C programming language and widely supported.
Daniel Moth, a program manager on the Parallelism team did a breakout session on C++ AMP with code samples at the conference. You can view his session, Blazing Fast Code using GPUs and more with C++ AMP on Channel 9.
Express your thoughts on C++ Accelerated Massive Parallelism. Are you excited about what's coming in Visual Studio vNext? Should Microsoft support widely adopted specifications such as OpenCL? Drop me a line at firstname.lastname@example.org.
Posted by Kathleen Richards on 06/21/2011 at 5:49 PM