4 ms·
NVIDIA can compete based on the superior performance of their products, but that's not enough. They try to attempt lock-in by encouraging software writers to us
by johnklos 6y ago
NVIDIA can compete based on the superior performance of their products, but that's not enough. They try to attempt lock-in by encouraging software writers to use CUDA and not use OpenCL.
In many projects that support both, OpenCL and CUDA often give similar performance, and in some, OpenCL is faster than CUDA. So CUDA isn't about getting more performance - it's about excluding everything non-NVIDIA.
I suspect that NVIDIA's gameplaying is what led to Apple deciding to not use NVIDIA in any Macs for the last several years.
- pjmlp 6y agoThey don't need to do any lock-in when the choice is between plain old C with printf like debugging, and a set of programming languages able to target PTX, with out of the box support for C, C++, Fortran and several managed languages, and nice graphical debugging tools. C++ support only came to OpenCL after it was clear to Khronos that it was time to move beyond C only vision of the world, yet almost no one bothered to implement OpenCL 2.x, which is why OpenCL 3.0 is basically OpenCL 1.2 to make all those OEM compliant, and SYCL is now moving into an backend agnostic C++ stack. So the competition did not move a finger to make OpenCL eco-system beat CUDA tooling, Google did not cared one second to make OpenCL available on Android instead pushed for their own Renderscript C99 dialect, but it is easy to blame NVidia when competition isn't up to their stuff. Just like Apple, after creating OpenCL and offering it to Khronos, moved away from their own creation after disputes on how OpenCL roadmap should be managed. Ironically, just like with CUDA, Metal Compute happens to be multiple language aware and having a modern API.
- cpgxiii 6y agoThe problem with OpenCL, just like OpenGL, is that it relies on vendor support for essentially the full stack. That means if a single vendor doesn't support the feature, it's basically impossible to ship any code that uses that feature to arbitrary users. Nvidia lagging behind in its support for OpenCL 2.x was probably not explicitly stated as "let's sabotage this competing open standard by dragging our feet" but that was the result. AMD and Intel both put together OpenCL 2.x support, so clearly Nvidia could have finished their incomplete support but didn't. The fundamental failing Khronos made was repeating the GLSL mistake and not specifying a compiled IR that would decouple OpenCL kernel code from program execution. This was clearly known to be a mistake at the time, given ample evidence from CUDA and HLSL that an IR was possible and could greatly improve the developer experience.