Just a quick question: Why should I do OpenCL on NVIDIA GPU instead of on AMD, when both have adopted the standard?


You can use either one; however, each one has its advantages.

ATI Radeonâ„¢ HD 5970 Graphics:

 3200 cores
 4.6 tera flops

Nvidia GTX 480 Fermi:

  512 cores
  Less than 2 tera flops
  Amazing memory hierarchy

The OpenCL code will remain the virtually the same (that’s the whole concept of OpenCL). You might have trouble w/ the library and header file calls, but by stripping down the code completely, you should be able to make it so it will run on either card. There is no specific reason why you should use NVIDIA instead of RADEON cards rlly, its only a matter of whats more convenient for you. I prefer NVIDIA GPU because it has worked more on providing resources for developers.

Hope this helps!


Hum… a RADEON 5970 is 2 OpenCL devices, not one. Global memory isn’t shared between the 2 GPU on the Radeon 5970. You could not compare it to a GTX 480 for many reasons.

There are qualities & drawbacks on the two platforms, ATI/AMD and nVidia. to name a few…

    Better memory bandwidth on nVidia’s architecture usually

    Higher number of processing units on ATI/AMD for same price

    Purely theorical Gigaflops performance better on ATI/AMD, for same price

    better driver support and standard on one of them (guess!)

    Better real-world performance on one of them usually (guess!)

    Support for all GPU since end of 2006 on nVidia

    Better memory architecture on any generation since 2006 on nVidia

    Availability of IGP that fully support OpenCL on nVidia since years

Anyway, HD5500+ are a huge leap forward for ATI/AMD, that offers same capability as GeForce 8000/9000 (g80, G92, …) on shared memory, but still are lacking memory bandwidth. And a majority of OpenCL kernels are memory-bound more than pure processing power bound.

If your kernels are processing power bound, ATI might be a better choice (HD5500+), but if it’s memory bound, you will have to compare memory architecture, memory bandwidth, and so on.