Good starter Nvidia Card for Scientific Computation

If you are writing something for general distribution, Nvidia cards have a much greater market share and support both openGL and Cuda so they are more flexible if you are developing software. If it is just for yourself, that point is moot.

@pFtpr also makes a point that the Intel iGPU also supports OpenCL so you can try without needing a discrete GPU at all if your CPU qualifies.

in terms of opencl vs cuda

Nvidia gains around ~20% of performance if you use CUDA over OpenCL, but remember your software will only be able to use CUDA. If you ever want to run the code on machine with AMD GPU/CPU or Intel CPU running it simply won't work.
(20% in best case scenario, but in some specific fluid dynamics you may benefit up to 40% using CUDA over OpenCL on nvidia gpu)

Note:
OpenCL will allow you to run it under pretty much any platform you compile your application on without requiring you to change your contexts in the code.

For terms of processing power lets say in 10min you have process 200 blocks

nvidia gpu with cuda will process them in 6min
nvidia gpu with opencl will process them in 7.6min
nvidia gpu + cpu with opencl cl will process them in ~7min
amd gpu with opencl will process them in 2min
amd gpu + cpu with opencl will process them in about 1.9min

Why many people tend to stay away from amd? Most people prefer ease of using pre-written snippets of code that cuda offers which already have high level of optimizations applied. With OpenCL is like with programming, its only as good as you are.

Why OpenCL is better?
CPU support, offers online compilation, It offered parallel compute mode, while cuda is stuck on single thread (dx9 pretty much). -- it doesn't hurt if you run with single nvidia gpu. You won't be able to use multiple gpu's in single enqueue thread - but forced to open another separate application defined to use 2nd gpu etc

Note 2:
Nvidia has been recently picking up pace in OpenCL where in times it performs 2x better than their CUDA application.
(example: optimized SETI compute application - nvidia actually is faster on OpenCL than on CUDA) But it won't always be the case.

If you want to learn something that will mean anything in next 10years go with OpenCL, its there to stay and will be merged together with Vulkan initiative. (CUDA is loosing market, as OpenCL programming is picking up in last 4years, and as mentioned in some cases like SETI, OpenCL actually gains 50% more performance over CUDA.)

Define what you want to do in your code. Find best gpu for it, and see if CUDA performs better in it. Many times over you may find that cards from different generations behave differently.
ex:

ex. 980ti will loose or be on par against 1060 in OpenCL, 7970 will win against 290x, fury in some cases in dp flops etc...

1 Like