Comment by winwang
Isn't the point of OpenCL to be... open? Not only did Intel and AMD not provide enough value, but neither did the community.
CUDA... is kind of annoying. And yet, it's the best experience (for GPGPU), as far as I can tell.
I feel like it says something that CUDA sets a standard for GPGPU (i.e. its visible runtime API) but others still fail to catch up.
The problem is the OpenCL development model is just garbage.
Compare the hello world of OpenCL [1] vs CUDA [2]. So much boilerplate and low level complexity for doing OpenCL whereas the CUDA example is just a few simple lines using the cuda compiler.
And what really sucks is it's pretty hard to get away from that complexity the way OpenCL is structured. You simply have to know WAY too much about the hardware of the machine you are running on, which means having the intel/amd/nvidia routes in your application logic when trying to make an OpenCL app.
Meanwhile, CUDA, because it's unapologetically just for nVidia cards, completely does away with that complexity in the happy path.
For something to be competitive with CUDA, the standard needs something like a platform agnostic bytecode to target so a common accelerated platform can scoop up the bytecode and run it on a given platform.
[1] https://github.com/intel/compute-samples/blob/master/compute...
[2] https://github.com/premprakashp/cuda-hello-world