News

Microsoft Opens C++ Extension To Other Compilers

Visual Studio 11 developers offered route to more GPU power


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.



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.
 

Features

  • Booting an Intel Architecture System, Part II: Advanced Initialization

    Once the processor is running and memory has been initialized, timers and devices must be started up and a memory map laid out. Only then, can the OS be loaded.

  • Booting an Intel Architecture System, Part I: Early Initialization

    The boot sequence today is far more complex than it was even a decade ago. Here's a detailed, low-level, step-by-step walkthrough of the boot up.

  • How Data Dependence Affects Performance

    Data dependence between statements is a straightjacket on the compiler's ability to optimize code for parallelism. So to get the maximum benefit from parallel code, data dependence must be carefully managed

  • The Intel Threading Building Blocks Flow Graph

    User feedback inspired the flow graph feature in Intel Threading Building Blocks, which allows programmers to express static and dynamic dependency graphs, as well as reactive or event-based graphs.

More Features >>

Go Parallel Video

Go Parallel Twitter Feed

More Twitter >>

Our Facebook Community