The Expanding Ecosystem For GPU Computing
nextplatform.com
nextplatform.com
Why is Nvidia this dominant, and why are so many researchers using a proprietary API like Cuda when there's open alternatives?
Related to this, are anybody using Intel's Xeon Phi? Tianhe-2 [0], the worlds fastest supercomputer since June 2013 use them as co-processors, but I rarely if ever hear about them in other projects.
We get better performance writing CUDA code directly than OpenCL, and it's easier for us to develop and debug.
Yes, it's "proprietary" but we need to get our job done.
The difference in momentum stems from a difference in design paradigms. OpenCL is just a library that you can link to can compile using GCC. Because the code you're writing is C++ syntactically you're often jumping through a lot more hoops. Nvidia uses their own compiler, so when you're writing cuda programs you have something that looks a lot like C++, however they have the freedom to extend the syntax to ease development. The marketing arm of Nvidia, combined with the ease of use helped get Cuda the defacto research platform. Once that ball was rolling, it becomes easier to find cuda teachers and cuda examples so it's naturally become more prolific.
AMD's software quality is not so great compared to Nvidia. Rich Geldreich's post, http://richg42.blogspot.com/2014/05/the-truth-on-opengl-driv..., is revealing.
I know Theano has had OpenCL support in the oven for quite a while now.
But it's hard to justify investing heavily into OpenCL when all the serious deep learning labs have already sunk $X0,000 into buying NVidia Titan cards by now. To these people (who are the stakeholders), OpenCL wouldn't add any benefit.
CUDA came out first and was really good, IMO. OpenCL is also really good, but doesn't get as much love from NVIDIA. NVIDIA really hypes CUDA and when they add features, they add them to CUDA first (and OCL never in some cases).
See my other comment for more - https://news.ycombinator.com/item?id=10554601
I was under the impression that AMD's strongest R&D in the past few years has been directed at hybrid consumer desktops, surely this should translate directly into their server processing products.
Meanwhile NVIDIA also seems to have really good marketing behind their GPU software stack. Lots of people who use CUDA have no idea that OpenCL exists and no idea that porting between CUDA and OCL is not super difficult. (It's been years since I've looked at CUDA it might have diverged more significantly since).
AMD's stability (on linux at least) is pretty poor. I don't know if it hurts adoption much, but it can't help.
Also, AMD absolutely dominates on integer workloads which is why it had been used so much for cryptocoin hashing machines prior to the widespread availability of ASICs for most algorithms. On floating point workloads, NVIDIA might do better than AMD, and those seem much more common in science than integer math.
Have you had any concrete issues recently? This may be one of these things where public perception changes slowly, unfortunately.
I believe that they may be improving, but in general I have seen far fewer functionality problems from NVIDIA than AMD. Generation after generation, it seems to replay itself.
I get the distinct impression that Nvidia try hard to make things work easily for you, whilst AMD just do not care (at least for Linux).
Relatedly, AMD's website has an 'OpenCL Optimization Guide' [0] (which you really need in order to use your GPU effectively) - for 2 years now, it has been out of date by 1 year or more, not updated to discuss the latest hardware.
[0] http://developer.amd.com/tools-and-sdks/opencl-zone/amd-acce...
You mean their APUs? They're taking the worst of both worlds (AMD CPUs and integrated graphics) and selling them as a package. They're pointless, imo...
Things have not changed since then.
Here is the author of the book "OpenCL in Action" discussing his problems with AMD's drivers: http://www.openclblog.com/2014/10/amd-and-opencl-20.html
Best quote: "dealing with fglrx is murder. I have never installed an AMD graphics driver without repeated trial and error."
My own impression (using AMD consumer cards for OpenCL on Linux) is that AMD just do not give a damn - their documentation is way out of date, their support in the forums is poor/nonexistent, their installers are just broken most of the time, etc etc.
Ideology may not get work done, but secrecy also prevents work from getting done. I can't continue with the line of work I was pursuing back then as long as the relevant interfaces are wrapped up in a binary blob.
Adoption rate isn't very high, since most applications still don't use that power.
E.g. for some of my nets (NLP tasks) training time has gone from hours to 15-30 minutes. This is great when you are just experimenting with different approaches to a problem and want to iterate quickly.
It's also great that nVidia hasn't been sitting on their laurels and released a library (cuDNN) of NN primitives that nearly everyone has been rebasing their packages on.