Because no-ones bothered to build one using the ATI cards, maybe?
I would guess the main attraction of Nvidia cards was probably CUDA, which is still a nicer environment to program for than OpenCL and seems to have a more lively ecosystem of libraries, tools, etc.
Also, floating point & integer math aren't the only relevant performance metrics. For their application domain, memory bandwidth & latency would probably be at least as important. Kernel switching time may be a factor too - there are many things you can't do with a single kernel. I don't know (but would be interested to hear) how the cards stack up against each other in those terms.
I'm not sure how you can claim CUDA is nicer. CUDA is not a public specification, it has poor documentation, and it only works on Nvidia.
I am a software engineer (or whatever the popular term this week is) who uses OpenCL frequently. I couldn't imagine being stuck on something like CUDA, between the C++ obsession and the fact it follows Nvidia Cg's way of syntax design instead of GLSL (OpenGL Shader Language) makes it difficult to use.
In addition, there never will be a native Linux implementation that is open source as Nvidia has basically tried to screw over Mesa/Gallium repeatedly with vague IP rights threats (see also, Nouveau, the X/Gallium driver for Nvidia cards, and how they unofficially threatened to sue if Nouveau continued reverse engineering hardware interfaces; they backpedaled when it got media coverage).
So, I dunno about you, but I don't like depending on companies that continuously screw developers who made the mistake of supporting their hardware.
OTOH, AMD has paid over $2 million in their open source efforts including having their legal department clear the programming manuals for use by X/Mesa/Gallium and also hiring multiple full time developers to work on the open source drivers, and has clearly supported FOSS at every turn.
I don't think language flamewars are very interesting - especially ones based on political rather than technical grounds - so let's just say that I should have qualified my statement with "in my opinion" and leave it at that.
Re: the original point, I have the impression that Nvidia has been more active in engaging universities and that's probably a better explanation for why their cards were used rather than AMDs.
I can't find anything named Microsoft AMP. However, it sounds like you're talking about DirectCompute, the compute API for DirectX.
AMD will support DirectCompute because its the native API on Windows, the same way they continue to support Direct3D. This doesn't mean that Direct3D is more viable of an API than OpenGL, but it means its popular on one platform.
Relevant link to the C++AMP announcement (http://channel9.msdn.com/posts/AFDS-Keynote-Herb-Sutter-Hete...). It's basically OpenMP for GPGPU, magic C++ macros that convert your code to DirectCompute shaders (although in theory OpenCL or Cuda could be targets as well). Like OpenMP, I'm skeptical whether or not it will actually lead to a any kind of speed up of random C++ code, even random C++ code that is data parallel, but its an interesting idea and like OMP is very low cost for developers to try out on their existing code base.
C++ AMP is a framework for acceleration of general purpose C++ code with heterogeneous processors. It's not the same as DirectCompute which in this case is more like the assembly language of GPU programming on Windows as Microsoft is building C++ AMP on top of it.
No, DirectCompute is more like the C++ of GPU programming. The syntax style of the compute shaders are the same C++-ish that Cg and HLSL uses.
In comparison, OpenCL's compute shaders use the same C-ish that OpenCL does for GLSL.
OpenCL and DirectCompute are pretty high level considering they're running on what equates to massively parallel DSPs.
Oh, and OpenCL already runs on heterogeneous setups. There are OpenCL compilers for three different GPU archs, x86, PPC, Cell SPEs, a few DSPs, and ARM. An OpenCL program can use all of them at the same time if available.
I meant that it was the assembly language because DirectCompute is the target of the C++ AMP compiler, similar to how some people call JavaScript the assembly language of the web. It's the lowest level language that those developing in that environment can target.
If you can find a url about AMP, I'd like to see it. Google seems to think it doesn't exist.
It almost sounds like AMD's project that turns Java bytecode into GPU-able code (although it is limited to what you can do normally, such as no allocation of memory/no object construction, only certain type primitives, and it should be largely branchless/loopless).
I would guess the main attraction of Nvidia cards was probably CUDA, which is still a nicer environment to program for than OpenCL and seems to have a more lively ecosystem of libraries, tools, etc.
Also, floating point & integer math aren't the only relevant performance metrics. For their application domain, memory bandwidth & latency would probably be at least as important. Kernel switching time may be a factor too - there are many things you can't do with a single kernel. I don't know (but would be interested to hear) how the cards stack up against each other in those terms.