AMD Further Embraces Open Source with GPUOpen, for Games and Compute
AMD is announcing their GPUOpen initiative today. They’re further moving towards the open-source in both gaming and with compute. This is an expansions of their focus to let the industry have all the tools necessary to successfully support their own individual needs, without the need for a static black-box solution that might be inefficient.
GPUOpen seeks to “unlock” the potential in the GPU, with open standards and support from AMD.
This new initiative comes is a way to help developers obtain the best tools necessary in order to create the most visceral experiences on any platform. There’s currently a distinct division between development on consoles and the PC that’s only now slowly being closed with the adoption of DX12. But that won’t solve all issues inherent in cross-platform development. GPUOpen will give developers open-source tools and resources that should allow closer to the metal development with better and more direct access to the GPU.
Also, the open source community is a true driver of innovation in the industry. There are plenty of examples throughout history where ideas have built upon one another, improving design and providing a much better experience better program over time. The idea is that open development encourages innovation by letting anyone play and modify the source code to their hearts content, adding in their own fixes and changes that have been found to be effective in particular situations, forking software as necessary. A variety of fresh ideas can be make their way into a basic and sound software architecture.
AMD has always been a large supporter of open standards. In contrast to their competitor, which has a black-box solution for both gaming and HPC applications. The source code can’t be accessed or modified making it not the most friendly of solutions to developers that want full control over the the entire code to make it truly optimized. There are recent examples where a black-box approach to graphical effects in games has had a profound negative effect on performance.
The first such part of their new initiative, GPUOpen, explicitly involves gaming and is a complete, easily accessible repository of all the effects, their SDK’s, associated libraries and other tools. The entire source code is accessible and able to be modified. Their calling this the GPUOpen Portal.
The empahsis is being placed on the fact that everything is completely open. AMD is using MIT’s open source license where everything can be used without restriction. That also means that assets can be improved upon and sold for profit, should you so choose to do so.
This is a policy that AMD has had for quite some time, though it’s in stark contrast to the attitude of their chief competitor, which has been a point of contention among gamers and developers, despite the latter being a seen as an “easier” solution to implement. There’s a certain allure to being able to copy and paste complex effects that are already pre-made and ready to go, though any developer should know that that is not at all how it works. Everything must be optimized for the specific codebase being used. AMD is providing documentation, tips, tricks and specialized support as part of their GPUOpen concept. It’s a true bid for the open source community.
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.
Linux support from AMD hasn’t always been the most complete, with drivers having been in rather poor shape. Even Steam Machines show that their drivers are not on par with their Windows counterparts, with performance that’s decidedly lower. It’s a shame as Linux increases it’s adoption rate among the curious and those that need such a platform for their business ventures.
GPUOpen introduces a change in attitude and direction with their Linux driver development. There’s currently an open-source Radeon Driver and a closed-source Catalyst driver, with the Catalyst based driver having the best overall performance for any application that wants to make use of the architecture for anything more than displaying the desktop. Both options were actually quite bad when it came to gaming performance and even trying to get some HPC applications to run was sometimes an exercise in patience that just shouldn’t have to be.
AMD will have a new open-source driver going forward, called AMDGPU. This driver stack is a complete rework of the entire driver that consolidates all of the good things that have been seen in the current split driver objective. The new driver, AMDGPU be included in the Linux kernel itself for easy portability to different distros. You’ll also be able to run applications headless, something that wasn’t possible before.
This is a far more serious approach to Linux, probably spurred by two segments of the market that are under-served by them at the moment. Linux is the platform of choice for large-scale compute projects. Not having an efficient driver that actually handle the kinds of tasks that the market needs and wants pushes away those potential customers to the competition, which has a fairly stable Linux presence. The Steam Machine and SteamOS have also made Linux an actual viable option for gamers, both experienced with the platform and not. It only makes sense that if they want Radeon GPU’s to be competitive in that space to actually start supporting it properly. And now they are.
AMD’s new initiative is a welcome change and a refocus on the open-source. That’s where people get the warm and fuzzy and feel good about computing. We enjoy having choices, whether or not we admit it all the time. Sometimes, for a developer, we need to be able choose how we approach, and have control over that entire process. AMD is supporting the open-source community by giving out the tools and SDK’s for free, letting anyone and everyone with the time, inclination and knowledge to play as is necessary.
For gaming this means better and more efficient effects that aren’t simply dropped into the code-base. This is how it should be done, letting developers have access where they need it in order to succeed.
Be sure to check out a fantastic look at GPUOpen by our very own Khalid, who talks about the importance of open-source in game development.