is nvidia the only one?

is nvidia the only vendor that allows CPU programming via CUDA?

is there any other way (apart from glut and openGL) to program a non nvidia card?

Since nVidia wrote CUDA, I think it is very unlikely that ATI/AMD would modify their hardware to work with their competitors software.

There is also Brook. It is another C language extension designed for GPU’s:

http://graphics.stanford.edu/projects/brookgpu/lang.html

Skippy

ATI has something that is called close to metal.

There is also something called Rapidmind

Rapidmind can be used on
AMD and Intel Mulci-core CPU
GPU NVIDIA GeForce 6000+ series, Quadro cards supporting SM 3.0, ATI x1X00 and 2X00 series
Also supported for on Cell like PS3

This was our first choice, but after looking at the programming model we decided to go for CUDA, CUDA stands much closer to C than Rapidmind.

ATI is also working on a higher level language to go with their newer cards called Brook+. It’s in beta, but only for Windows XP now:

http://ati.amd.com/technology/streamcomputing/sdkdwnld.html

Finally, I hope the Brook+ is better than the CTM, I searched the web for some useful information about CTM when I first started my research on GPGPU but there was not much about it. And the website of AMD/ATI did only stated that it was an OpenSource thing and could be downloaded @ sourceforge.net. After a while I managed to download it, but because there was no programming guide or anything like it, I threw it away and took a look at Rapidmind and CUDA.
Thanks NVIDIA for the last one ;)

It actually sounds that AMD CTM is a little out of date since they have released some fire stream cards with some higher-level SDK,hopefully. I guess this is a bit rude to discuss that any further on the official NVIDIA forum O:)

Concerning the initial question, i do not get the actual purpose. What are you looking for, other solution to program your NVIDIA GPU, or more generic GPUs with opengl/directx-based solutions such as Brooks, or are you looking for a generic layer such as rapidmind (then do not forget the FPGA folks) ?

I also saw some impressive results from proprietary solutions such as those of the “GPU tech” company that propose tools to do GPGPU programming using C like langage, which is then translated into opengl/directx, making it portable.

So it seems that you can either use the vendor’s solutions, as NVIDIA CUDA or AMD"s solution, but you can still use graphics API, with or without high-level tools. The first being by far more accessible and less constrained when available.

Well when I first started programming on the GPU sept 2007, I took a look at possible candidates for programming on the GPU. I made an advisory report about the options there were. When I was looking for information about CTM there was not much I could find. Only that it had some front/back-end functionality to run on BrookGPU. The support was awful and I decided to go for CUDA. And I’m still happy we took that decision. CUDA is fast, easy to program for someone who doesn’t had any understanding about GPUs and Programming :P

The only thing is that it only supports G80+ series but we knew that beforehand, and at this time I think the g8x is the most used / sold GPU at the time.

NVIDIA did a pretty good job, and I think I’m not the only one that thinks this way.