Hacker News new | past | comments | ask | show | jobs | submit login

I'd really like to understand the reasons behind the focus on CUDA and not OpenCL. My understanding is that nVidia and AMD made sure their hardware and software would make the GPU accessible for non-graphics tasks, but AMD's version is not functionally or legally locked to their hardware. Why hasn't OpenCL taken off and run on nVidia hardware?

It seems like there must be more at play, but I'll admit a lack of insight and imagination on this one.




It seems like there must be more at play, but I'll admit a lack of insight and imagination on this one.

I think the reasons are twofold: 1. CUDA had a big headstart over OpenCL. 2. NVIDIA has invested a lot in great libraries for scientific computing. E.g. for neural nets, they have made a library of primitives on top of CUDA for neural nets (cuDNN), which has been adopted by all the major packages.


Performance. OpenCL has been 2-5x slower for ML than CUDA. Not sure of the exact reason but I think it's the highly optimised kernels which are not there with OpenCL, but are with CuDNN. I think it's mostly a software issue, compute capacity in theory should be more or less the same with equivalent AMD/NVidia cards.

AMD should have invested much more heavily into ML, if they had, their share price would probably look a bit better than it does now.

This looks interesting - running CUDA on any GPU. http://venturebeat.com/2016/03/09/otoy-breakthrough-lets-gam...


I recall hearing that CUDA has much more mature tooling. Not only the already mentioned cuDNN, but the CUDA Toolkit [0] seems like a really comprehensive set of tools and libraries to help you with pretty much anything you might want to compute on a GPU.

Also somewhat related: AMD seems to be moving towards supporting CUDA on its GPUs in the future: http://www.amd.com/en-us/press-releases/Pages/boltzmann-init...

[0] https://developer.nvidia.com/cuda-toolkit


On closer inspection, it looks like AMD's CUDA support consists of "run these tools over your code and it will translate it so your code does not depend on CUDA"...

Its sort of supporting CUDA, just like a car ferry sort of lets your car 'drive' across a large body of water.


Because it requires nVidias cooperation in implementing OpenCL. And of course they are not about to do so in a useful manner when they are leading with CUDA.

Also, the premise of OpenCL is somewhat faulty. You end up optimizing for particular architectures regardless.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: