Ten reasons to love OpenCL
Amdahl software has posted an interesting article about why they think programmers should like OpenCL, which has quite useful insights. Some of the reasons are direct criticism to CUDA (without explicitly naming it). OpenCL has advantages in some aspects but it also has drawbacks considering CUDA’s maturity is undeniably higher and that CUDA can be specifically tuned (since it only targets NVidia GPUs anyway).
Here are their thoughts with a brief comment of ours: (bold letters are theirs, regular writing are our thoughts – we agree with every aspect pointed out)
1 – OpenCL can accelerate code by a factor 10 or more – without too much trouble for a C programmer. If the code is finely tuned we’re looking at 40-300x speedup.
2 – OpenCL is an open standard – good because any manufacturer can comply; the drawback is that it limits optimizations.
3 – OpenCL can help save power – true, and often taken for granted.
4 – OpenCL can save you hardware cost – well… not that we have too many CPU and GPU manufacturers… let’s hope for some FPGAs and handheld OpenCL soon.
5 – OpenCL adoption is ramping up rapidly – although there’s a LOT of ground to cover. The hardware and programmer sides are going well but there aren’t very many softwares around using it.
6 – OpenCL may be used as the basis for generating custom hardware – unquestionable.
7 – The OpenCL C99 language is based on C – this is good news for C programmers alright.
8 – OpenCL can be used from a variety of host languages – but you’re still stuck with OpenCL C99 for the kernels…
9 – It is easy to start with OpenCL – as long as you already know parallel patterns, which is the major difficulty when learning CUDA, MPI, Cilk, Microsoft.Parallel etc.
10 – OpenCL is platform independent – and we hope to see it available in many more platforms very soon.
We’d like to add a 11-th: OpenCL can compile code during execution time