Something like DirectX (or OpenGL) might be the better level to target? In practice, CUDA is that level of abstraction, but it only really works for Nvidia cards.
Something like DirectX (or OpenGL) might be the better level to target? In practice, CUDA is that level of abstraction, but it only really works for Nvidia cards.
To circumvent: you have someone (who might be bound by the EULA, and is otherwise not affiliated with you) dump the data on the internet, and someone else (from your company) can find it there, without being bound by the EULA. Nvidia could only sue the first guy for violating the EULA.
However you are right, that copyright and patents still bite.
Did they? Sounds like AMD did that[^1] and that the project is continuing based on the pre-AMD codebase[^2].
[^1]: https://www.phoronix.com/news/AMD-ZLUDA-CUDA-Taken-Down
There are people actively working on that.
CUDA is hardware designed according to the C++ memory model, with first tier support for C, C++, Fortran and Python GPGPU DSLs, with several languages also having a compiler backend for PTX.
Followed by IDE integration, a graphical debugger and profiler for GPU workloads, and an ecosystem of libraries and frameworks.
Saying just use DirectX, Vulkan, OpenGL instead, misses the tree from the forest that is CUDA, and why researchers rather use CUDA, than deal with yet another shading language or C99 dialect, without anything else.