While debate surrounding the rapidly crystallizing vision of Windows 8 is dominating many news headlines, Microsoft is pushing ahead with developments behind the GUI by opening up its C++ AMP specification for potential use by non-Microsoft compilers such as those supplied by Embarcadero, Intel, and others.
The company is making this move in order to position Visual Studio developers closer to the benefits of using GPUs (graphics processing units) from vendors such as Nvidia in their applications. While some, if not most, GPU power will be directed towards graphics-intensive tasks, the unit will also logically be available to load balance wider CPU related tasks if, for example, complex data analysis computations need to be executed.
The C++ AMP specification, or the C++ Accelerated Massive Parallelism to afford it its full moniker, first surfaced around the time of the developer preview of Visual Studio 11 in September 2011. C++ AMP accelerates the execution of C++ code by taking advantage of the data-parallel hardware that is commonly present as a GPU on a discrete graphics card. (Read more about C++AMP here.)
According to Microsoft's Visual C++ Libraries Reference website, "The C++ AMP programming model includes support for multidimensional arrays, indexing, memory transfer, and tiling. It also includes a mathematical function library. C++ AMP language extensions and compiler restrictions enable you to control how data is moved from the CPU to the GPU and back."
Essentially, this technology exists to give developers (and "mainstream" C++ developers at that) an opportunity to write programs capable of running in parallel suited to deployment across heterogeneous computing environments.
"What we see is more and more people are looking to take advantage of the GPU in their applications," said Tony Goodhew, a Microsoft product manager for Visual Studio. This more open approach from Microsoft is hoped to open up parallel power to developers not specifically skilled in concurrency.
Microsoft engineers have reportedly toiled diligently to minimize the number of changes to the official version of C++ in order to make this new openness of choice possible.
While retaining as much of the canonical structure as possible, Microsoft has been forced to engineer C++ AMP with a number of restrictions needed for code to successfully run across multiple processors. But while restrictions exist on some levels, extensions and augmentations will also now be offered such as the option to support multidimensional array types and asynchronous memory transfer.
Microsoft C++ AMP was discussed in depth in Dr. Dobb's at its launch late last year.