Microsoft Demos C++ AMP At AMD Developers Summit
MojoKid writes "The second day of the AMD Fusion Developer Summit began with a keynote from Microsoft's Herb Sutter, Principal Architect, Native Languages and resident C++ guru. The gist of Herb's talk centered around heterogeneous computing and the changes coming with future versions of Visual Studio and C++. One of the main highlights of the talk was a demo of a C++ AMP application that seamlessly took advantage of all of the compute resources within a few of the various demo systems, from workstations to netbooks. The physics demo seamlessly switched from using CPU, integrated GPU, and discrete GPU resources, showcasing the performance capabilities of each. As additional bodies are added, workload increases with a ramp-up to over 600 of GFLops in compute performance."
Oh but haven't you heard? They're dropping everything else for HTML5/JavaScript ;)
In this context, AMP doesn't stand for amplifier, Adenosine monophosphate or Ampere, but for "Accelerated Massive Parallelism". Seems like a microsoftism for the more traditional term of "Massive Parallel Processing"
Questions raise, answers kill. Raise questions to stay alive.
The most relevant difference is that it automatically uses different types of compute resources for the same task, depending on what's available. Core Image can do some of that, but it's limited to graphics workloads.
So it's Grand Central Dispatch + Core Image + a bit.
'Sensible' is a curse word.
Them and pretty much anyone who writes c++ code and wants their software to run faster. I suppose if you're interested in having your software run slower, this may not be for you.
This is key innovation. It looks like an important new step we've needed for a long time. It looks like they have done well with it.
Of course it should be inspected for traps. From these folks there are always traps. But this particular time I think this is important enough that we look closely at it to see if there isn't something useful we can safely extract, while being mindful for the traps.
I've been here a long time. I've posted nearly 5,000 comments here over 8 years. Never once before have I said this about a Microsoft technology: This deserves a look.
Help stamp out iliturcy.
Well, assuming your code has embarrassingly parallel components. Otherwise, it's pretty useless.
Don't thank God, thank a doctor!
Java is equally garbage.
Mm-yeeaah!... But, at least, it has a garbage collector. :)
Questions raise, answers kill. Raise questions to stay alive.
Can't speak for others, but in my case it's
Don't know what AMP is and can't understand TFS/TFA
Neither the summary nor the article seem to explain what AMP is.
For the benefit of everyone else who is trying to figure out, here is a link: Introducing C++ Accelerated Massive Parallelism (C++ AMP) To quote from that page:
So, from a cursory look, this seems to be similar in purpose to OpenCL.
Please correct me if I got my facts wrong.
Java is equally garbage.
Mm-yeeaah!... But, at least, it has a garbage collector. :)
If only it could collect itself.
You need something recursive for that: try Prolog and/or the "GNU's not UNIX" toolset :)
Questions raise, answers kill. Raise questions to stay alive.
This is an awesome development - Microsoft adding support for GPU computing in their mainstream tools and C++.
Today, CUDA C++ already provides a full C++ implementation on NVIDIA's GPUs:
http://developer.nvidia.com/cuda-downloads
And the Thrust template library provides a set of data structures and functions for GPUs (similar in spirit to STL):
http://code.google.com/p/thrust/
- biased NVIDIA employee
I can see this pushing new hardware. More developers start writing with C++AMP, because it lowers the bar of entry for writing code that makes use of the GPU, and before we know it every little application will have some C++AMP. But, a lot of older computers which don't have DirectX 11 graphic cards have to emulate the DirectX DirectCompute API on the CPU, which is noticably glacial. People see an application run blazingly fast on one computer, see it slow on theirs and ask why it's so slow on theirs. Either they find out that they need a new GPU, or figure that they're computers getting old and they need to buy a new one (which would just happen to have a decent GPU in it).
That was back with MSVC++ 6.0 released in 1998 before the ISO C++ draft was fully ratified. MSVC++ today is one of the more standards compliant compilers, although their template instantiation mechanism is still somewhat broken so that it can still support their legacy MFC crap.
A "while ago", gcc didn't support C++ namespaces. So?
No, it's really a lot more like OpenCL.
Which is not Mac only BTW... but you can use it in OSX or IOS development.
Also Apple's Accelerate library (C library) takes advantage of OpenCL for BLAS and Linpack and so on...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
There are already tons of such tools, most of which are not tied to specific architectures, operating systems, or compilers.
Really, why would you go Microsoft on this at all? Clusters and supercomputers usually don't even run Windows at all.
I don t think there are open affords which are attempting to do this by extending C++ compiler.
Open affords(clearly exclude CUDA) are usually inventing a new language (usually a subset of C). With much restricted language features, and is loosely integrated with host code.
I think they are the first and they are doing the right things here.
It is nice to have the host code tightly integrated to the GPU code, and with most of the useful C++ language features there.
Yeah, I know you're trolling, but C# is a good language. I've coded millions of lines in C, C++, and C# and I can tell you which I'd rather code in any day of the week and twice on Sunday. Combined with VS, you simply get. stuff. done. very quickly and very easily.
Ahh, the sinking feeling of having written a serious response to a post that's accruing funny mods...
Ah, QNX :-)