OpenCL vs CUDA C

OpenCL vs CUDA C:

Which do you prefer and why?
What will be the future GPU programming language in your oppinion?

While I’m quite am amateur in regards to parallel computing, I must say I prefer OpenCL. Simply due to the fact that OpenCL is cross-platform and not limited to NVIDIA hardware as CUDA is, I believe that in the long run, it will take off and become the standard. The ATI Stream SDK is growing and soon, both ATI and NVIDIAs SDK will fully support the OpenCL 1.0 spec, giving developers a choice in hardware and maybe even the opportunity to mix and match in the future. Don’t get me wrong, I think CUDA is great and much much more mature than OpenCL, but CUDA has an expiry date a few years into the future. That being said, I think I like CUDA a bit better right now, simply because it is more complete, less random error prone, and there is less work in terms of setup than OpenCL.

It would be better, if ati implement cuda. Like some compute capability, 1.5i. I do not like opencl. It is so unnatural from my point of view.

OpenCL will probably pick at some point, at least it gets the hype now and it’s cross platform but at the moment definitely Cuda as OpenCL is a small hell to program.

User space is horrible/ No pitched memory support as far as I can tell. Very limited pointer support. . ATI don’t support images at least on the CPU (didin’t try ATI GPUs) plus their CPU implementation is a mess. Images are horrible compared to textures (returns intergers or floats which means casting for actual 8 bit images and more registers, 4 vector only even if you want a single value …) and to top it all up, most implementations are buggy in one way or another.