AMD Further Embraces Open Source with GPUOpen, for Games and Compute
GPUOpen for Compute
On the compute side AMD is taking a different approach than NVIDIA is with the way they approach the market. That is, AMD is offering all the tools necessary to be successful in whatever scientific, or other, field that you happen to be in. Libraries and SDK’s, just as with gaming, are open and you’re free to modify them to your hearts content.
While AMD is not in the business of necessarily creating specific high, or low-level, software, such as DNN’s, they’ll extend a hand to help you refine and perfect your code. They do participate in the Caffe project which is an open-source DNN library, and have their own forked version that runs optimal on OpenCL.
At the RTG Summit, I was able to speak briefly about the direction they’re headed with HIP and HCC, or their Heterogeneous Compute Compiler. CUDA is very prominent language in HPC applications. It’s actually a fairly “easy” language to work with, making it attractive to many clients. The problem is that it’s a closed eco-system that necessitates only certain hardware to run. HIP is seeking to open-up more choices for developers by converting code to portable C++ that can then be further fine-tuned. Theoretically the code should be able to run right after an initial conversion, though that’s not best-practice anyway. I was told that at the moment C++ running on GPU’s should run similar tasks at about the same speed as in OpenCL, so there won’t be much of a speed difference compared to if you wrote it completely from scratch in a different language entirely. That’s a positive sign that, at a low level (in a high level language), GCN is responsive to C++ calls.
OpenCL C++ was announced by Khronos in March of this year when OpenCL 2.1 was announced. It’s a natural progression and allows for the use of a more well-known (presumably) higher-level language and all the benefits that C++ has over C. OpenCL (in C form) isn’t well used for a variety of reasons, being in inelegant language, and this could help spur more open-source development in the HPC sector.
HCC is the compiler that’s able to compile both C and C++ and uses parts of LLVM and Clang to compile for both the CPU and GPU at the same time. This means a single source output that can be run on both with something that looks very much like C++ Amp, with some differences. AMD will continue to improve the compiler on their own, though GPUOpen means that you, or anyone, are more than welcome to introduce changes to the source-code. Forks are always welcome with something as auspicious as this project.