RSS

C/C++

Microsoft Opens C++ Extension To Other Compilers


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.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

DrDobbs encourages readers to engage in spirited, healthy debate, including taking us to task. However, DrDobbs moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing/SPAM. DrDobbs further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Best of the Web

What the New iPad and iOS 5.1 Mean for Developers

The new display is gorgeous. But local storage for HMTL5 is currently broken on the new iPad and performance of some apps is slower. Here's a deep dive into the issues, including benchmarks and analysis.

Quick Read

Triple Buffering as A Concurrency Mechanism

Triple Buffering is a way of passing data between a producer and a consumer running at different rates. It ensures that the consumer sees only complete data with minimal lag.

Quick Read

Embedding GDB Breakpoints in C Source Code

Have you ever wanted to embed GDB breakpoints in C source code? Something like this:
printf("Hello,\n");
EMBED_BREAKPOINT;
printf("world!\n");

Quick Read

Writing Kernel Exploits

Why attack the kernel? Because it has a huge attack surface with potential for very interesting bugs. This presentation (pdf) takes a code-level dive into recently reported Linux-kernel exploits.

Quick Read


More "Best of the Web" >>

Video

Enabling People and Organizations to Harness the Transformative Power of Technology