AMD’s GPUOpen offer developers access to its libraries and “metal”

Posted: 12.15.15
The company embraces open source with game library and register data

AMD plans to give developers unprecedented access to the innards of its GPUs next year, when it launches its GPUOpen initiative. AMD is the only company that can claim a clean sweep across gaming platforms, from desktops, notebooks, to all the consoles, and even a few dedicated pachinko machines. And although AMD GPUs are about par with Nvidia’s, Nvidia has a much larger market share in the desktop PC space. That’s due to a lot of reasons, and AMD has been painfully reminded about them, so no need to drag them out again here. The good news is the company is doing something about it.

One of the competitive advantages that helps Nvidia gain market share is that it offers a library of proprietary game development tools. Those tools, combined with some on the spot handholding has enabled game developers to embed special functions and performance enhancements like physics processing for destructible environments and realistic hair and shadows that show up best (and sometimes only) on an Nvidia GPU. AMD has done the same thing, just not as wide ranging or aggressively (some of those old problems referred to earlier).

AMD has always, or at least for a long while, been in favor of open standards and systems. That is as much practicality as it is philosophy, the company simply doesn’t have the resources to fields and support a proprietary system.

So AMD had to do something more than just offer a me-too games library, even though they have one, just not as well publicized. GPUOpen does that and contains much more than just libraries. GPUOpen is an all open stack set of SDKs, and includes such engines as AMD's OpenCL FireRender ray tracing engine, its RapidFire cloud SDK, CodeXL debuggers and performance profiler. AMD is throwing in a substantial library of graphical resources such as ShadowFX for shadow processing, GeometryFX for physics, and AOFX for ambient occlusion — all open source and, theoretically GPU -neutral.

AMD will also include the TressFX library t developed with Crystal Dynamics handles fur and hair generation in much like Nvidia's HairWorks. Theoretically developers could use both in a game, tress for one character, hairwoks for another—that might be pretty interesting. We’ve heard Grand Theft Auto V has done that.

In a respectful nod to the Steam machine and enterprise, AMD has two Linux driver stacks. There's an all-open Radeon driver and an all-closed Catalyst driver, with the latter tending to be faster and newer. However, this too will be changed and there will be a common open source base graphics driver for AMD's GPUs. On this open source base will be two parallel stacks, each containing modules for OpenGL graphics, motion video codecs, and OpenCL GPU computation. This is not a big leap for AMD, they have 99% of this already done.

OpenCL is problematic in that even though it’s an “open” standard, AMD’s initial implementation will be specific to AMD processors because they will have a customized version, but AMD swears they will change that ASAP. OpenGPU will support OpenCL as well as Vulkan, and will also evolve into open source. However, even when that happens the AMD will maintain a professional OpenGL module that will remain closed source to support legacy applications.

The "Professional/Gamer" stack will include their open source motion-video module (VCE) and closed source OpenGL module.

The Boltzmann Initiative

Not a new Matt Damon movie, its AMD’s HSA that allows developers to divide workloads between the CPU and GPU

As part of AMD's open source offerings the company has introduced its "Boltzmann Initiative." AMD's HSA (heterogeneous system architecture) is designed to allow developers to divide workloads between the CPU and GPU in an efficient way and is primarily aimed at typical desktop tasks such as gaming. The Boltzmann Initiative extends the HSA concept to high-performance workloads by adding cluster support, distributing workloads not just between the CPU and GPU within a system but between CPUs and GPUs in multiple systems connected using InfiniBand, and a headless Linux driver for using GPUs without actually driving any displays.

AMD is developing HIP, the Heterogeneous-compute Interface for Portability as part of the Boltzmann Initiative. This is a set of C++ libraries for performing parallel computation, along with a tool for converting GPU computational code from the proprietary CUDA to standard C++ using the HIP library. This HIP C++ can then be compiled with AMD's Heterogeneous Compute Compiler (HCC) for AMD GPUs, Nvidia's NVCC for Nvidia GPUs, or a regular C++ compiler for the CPU. The HCC C++ compiler is built on the open source Clang/LLVM compiler framework.

AMD wants back in the HPC (high-performance computing) arena they helped initiate in 2000, and think that with HIP and the Boltzmann Initiative they have an opportunity to open up the HPC market and put a dent in the current CUDA and Nvidia domination. AMD plans to roll it out in the first quarter of 2016 with the HCC compiler, will of course will be open source.