I am in search of GPU to run OpenCL code which mainly solves Navier-Stokes equations. I would like to get something that is not-so-pricey but something that could crunch some heavy numbers. The code is mainly written in single precision data types, but I would also like it so that it can do some decent double precision calculation also.

According to Geekbench OpenCL benchmark chart card with higher FP32/FP64 doesn't really seem to be reflecting better OpenCL performance: NVIDIA A6000 has FP32 of ~40 TFLOPS and NVIDIA RTX 3090 has ~35 TFLOPS, yet NVIDIA RTX 3090 has higher placement in the chart.

So, I was wondering what really dictates GPU's OpenCL performance? Are recent architectures usually better in OpenCL? Does having higher compute unit or processor count (CUDA cores for NVIDIA or Stream processor count for AMD) affect OpenCL performance?



A GPU is kind of like a whole sub-computer on its own add-in board.

  • There's a central processor with all the usual performance indicators like core count, IPC, clock speed, FLOPS benchmarks, supported instruction sets, etc.
  • There's a memory bus and memory modules with their own clock speed and bandwidth.
  • There's a PCIe bus with its own clock speed and bandwidth, kind of analogous to the bus that connects a CPU with the motherboard chipset.
  • It executes machine code compiled specifically for its architecture. (Shaders)

Keeping all of that in mind, these factors all affect performance in different ways and the performance will vary depending on the program you want the system to execute. This is true for both CPUs and GPUs. A benchmark only tells you how fast that program will run. A different program will have different performance.

Ultimately you cannot know ahead of time what GPU is best for your OpenCL code unless somebody has already run that specific code on the GPU and benchmarked it. Every OpenCL program is going to utilize the GPU in a unique way. If your program does lots of simple floating point operations in parallel with the bare essential memory I/O, it will probably end up running better with the GPU that has a better theoretical FLOPS benchmark. But programs are never that simple, so FLOPS measurements are useful as an upper bound for performance; Not an average.


You need to see which gpu is best with tasks similar to the ones you want to run. If you run Blender a lot, use a gpu thats reviewed well for blender. The same for davinci resolve, games... AMD gpu's are generally better at opencl, so maybe thats a better choice if you run only opencl and games. Achitechture, clock speed, core count and memory speed are what determens performance, each task differs in what it needs most.

  • So, the bottom line is 'we have to run all the cards in order to find out whether they perform good or not for a specific task?'. Eventually meaning 'it depends'...?
    – Redshoe
    Oct 3 '21 at 16:23
  • Almost, but reviewers can give you guidelines in the types of apps you use
    – Irsu85
    Oct 3 '21 at 18:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.