Microsoft is making it easier for C++ programmers to take advantage of the computing power in graphics processing units (GPUs) with a new, open specification called C++ AMP.
The software giant announced the new specification at its GoingNative 2012 event on Feb. 3, which focused on C++ development.
Microsoft officials said developers have been seeking to tap into the processor power in the GPUs of modern computers that could be used to accelerate computing. However, it is not something a typical C++ developer knows how to code for. Thus, coding for it requires highly specialized software development skills and targeting certain chipsets, making it either inaccessible or very expensive.
Enter Microsoft with its C++ Accelerated Massive Parallelism (C++ AMP) technology, which is already implemented in Visual Studio 11 and gives C++ developers access to accelerators such as the GPU for parallel programming. At Going Native 2012, Microsoft announced the open publication of the C++ AMP spec under the Microsoft Community Promise license.
C++ AMP has three broad categories of functionality: the C++ language and compiler; a runtime that contains an AMP abstraction of lower-level accelerator APIs, and also supports multiple host threads, processors and accelerators; and a programming model that mostly comprises C++ AMP entry points and call sites, along with runtime boilerplate code.
The C++ AMP spec reads: C++ AMP (Accelerated Massive Parallelism) is a native-programming model that contains elements that span the C++ programming language and its runtime library. It provides an easy way to write programs that compile and execute on data-parallel hardware such as graphics cards (GPUs).
As an industry trend, advancement in heterogeneous hardware has progressed at a rapid pace, said S. Soma Somasegar, corporate vice president of Microsofts Developer Division, in a blog post. This in turn has fueled developer desire to target such hardware for accelerated computation, necessitating a significant step forward in programming models to enable such practices.
The release of the C++ AMP spec means compiler developers and vendors now have the ability to implement C++ AMP in their compilers, just as Microsoft has done, broadening access for C++ developers everywhere to the possibilities offered by heterogeneous hardware, Somasegar added.
AMD and Nvidia are already on board with the spec. Microsofts aim is to provide the C++ community with a standard that, when adopted by compiler publishers, will broadly provide C++ developers with the ability to code for the compute power of GPUs and other heterogeneous hardware.
Microsoft supports and encourages anyone to implement the C++ AMP open specification on any platform, and we are actively working with interested parties already, said Daniel Moth, program manager of the Microsoft C++ AMP library, in a blog post. If you are a compiler, hardware, or operating system vendor who is interested in C++ AMP support for your platform, read the spec and feel free to get in touch.