AFDS11: Microsoft Announces C++ AMP, Competitor to OpenCL

Subject: Editorial, General Tech, Shows and Expos | June 15, 2011 - 05:58 PM |
Tagged: programming, microsoft, fusion, c++, amp, AFDS

During this morning's keynote at the AMD Fusion Developer Summit, Microsoft's Herb Sutter went on stage to discuss the problems and solutions involved around programming and developing for multi-processing systems and heterogeneous computing systems in particular.  While the problems are definitely something we have discussed before at PC Perspective, the new solution that was showcased was significant.

View Full Size

C++ AMP (accelerated massive parallelism) was announced as a new extension to Visual Studio and the C++ programming language to help developers take advantage of the highly parallel and heterogeneous computing environments of today and the future.  The new programming model uses C++ syntax and will be available in the next version of Visual Studio with "bits of it coming later this year."  Sorry, no hard release date was given when probed.

Perhaps just as significant is the fact that Microsoft announced the C++ AMP standard would be an open specification and they are going to allow other compilers to integrated support for it.  Unlike C# then, C++ AMP has a chance to be a new dominant standard in the programming world as the need for parallel computing expands.  While OpenCL was the only option for developers that promised to allow easy utilization of ALL computing power in a computing device, C++ AMP gives users another option with the full weight of Microsoft behind it.

View Full Size

To demonstrate the capability of C++ AMP Microsoft showed a rigid body simulation program that ran on multiple computers and devices from a single executable file and was able to scale in performance from 3 GLOPS on the x86 cores of Llano to 650 GFLOPS on the combined APU power and to 830 GFLOPS with a pair of discrete Radeon HD 5800 GPUs.  The same executable file was run on an AMD E-series APU powered tablet and ran at 16 GFLOPS with 16,000 particles.  This is the promise of heterogeneous programming languages and is the gateway necessary for consumers and business to truly take advantage of the processors that AMD (and other companies) are building today. 

If you want programs other than video transcoding apps to really push the promise of heterogeneous computing, then the announcement of C++ AMP is very, very big news. 

Source: PCPer

June 16, 2011 | 09:05 AM - Posted by Anonymous (not verified)

Microsoft is still struggling with "not invented here" syndrome... what's wrong with OpenCL that they have to muddy the waters with their own proprietary language? And why not propose enhancements to OpenCL instead?

June 16, 2011 | 11:29 AM - Posted by Anonymous (not verified)

It's a good move on their part. Lower to midrange HPC will be a very important factor for market share in the future, this has been helped by the introduction of low cost hardwares that allow highly data parallel algorithms to be run efficiently.

Microsoft has a long history of supporting its developers through its products, and this would be something sorely missed if it were never introduced.

June 18, 2011 | 09:31 AM - Posted by Anonymous (not verified)

sure, but there's no reason microsoft couldn't support it's developers/customers by leveraging and improving an existing standard like OpenCL, is what I believe the OP was saying.

June 16, 2011 | 03:59 PM - Posted by Ryan Shrout

Another reason is that OpenCL is "C-ish" while C++ AMP is C++, more widely used, more accepted and generally considered the "fastest" of modern programming languages.

June 18, 2011 | 09:38 AM - Posted by Anonymous (not verified)

Who would ever consider C++ faster than C? It is pretty much fundamentally limited to being, at best, as fast as C.

OpenCL has C++ bindings as well. I haven't seen anything that would indicate why it's lacking compared to Microsoft's solution. And being an open standard, Microsoft could propose changes to the OpenCL standard if they were clearly superior.

In reality, Microsoft wants to lock people into developing on their platform. It's the obvious reason. D3D vs. OpenGL part 2.

June 20, 2011 | 12:12 AM - Posted by Anonymous (not verified)

that C++ vs. Java, Scala, and Go..

June 16, 2011 | 10:34 PM - Posted by Anonymous (not verified)

So AMD organizes this event to try to push OpenCL for its heterogeneous computing chip and invites Micorost to announce the competition? Did i miss something here? I'll have to see the keynote right now.

June 17, 2011 | 11:33 AM - Posted by Ryan Shrout

As a hardware vendor, AMD doesn't really want OpenCL to be successful, they want ANY open spec programming model to be successful that will help take advantage of the hardware they have built.

So, yes, they were helping to promote OpenCL while also giving MS the platform to announce C++ AMP. Doesn't Intel support writing code in both C and C++?

June 18, 2011 | 06:46 PM - Posted by Anonymous (not verified)

OpenCL is dead. Its a low-level driver API - really difficult to use. Programming GPUs has to be as easy as C and C++. Microsoft's AMP C++ will immediately kill OpenCL.

OpenCL is just completely being slowed down by a committee that takes forever to add anything. CUDA is about 5 years ahead of OpenCL now and keeps getting ahead (because OpenCL just doesn't move).

July 12, 2011 | 10:09 AM - Posted by Carlo Milanesi (not verified)

I will use a parallel extension to C++ when it will run at top speed on Visual C++ and GCC compilers, with C++03 and C++0x, on Windows and Linux OSs, on Intel and ARM CPUs, on Nvidia and ATI GPUs.
Otherwise, I'll keep writing CPU-only software.
Microsoft's is yet another attempt to de-standardize C++ and lock developers to Microsoft operating systems and tools.

December 2, 2011 | 08:18 AM - Posted by Jesus Santamundo (not verified)

The funny part is that when you get into high-end software, everybody is writing their acceleration CUDA only thanks to above and nVidia giving kickbacks to Adobe, etc. If AMP ends up producing something that people will use (which they will since it's ending up in VS), and will run on multiple brands of cards, I'm all for it. Both major graphics companies went nuts talking about DX11 support for a while then proceeded to make sure everybody avoided using compute shaders for anything.

Also Carlo Milanesi has nearly constant sex with horses and other farm animals. At least the one I know. Probably a different guy than above, although the previous poster sure acts like he's into it.