Not all are aware how much has been open sourced at AMD. And there are several reasons for this. AMD wants to stand out in HPC and therefore listened carefully to their customers, while taking good note on where HPC was going.

Where open source used to be something less useful for businesses, it is now simply required to be commercially successful. Below are the most important answers to this question.

I hope this post will give you the insights why it's an important step. Why this will improve software quality and why it makes sure there are less "unknown unknowns" in a project.

Give deeper understanding of how functions are implemented

It is very useful to understand how functions are implemented. For instance the difference between sin() and native_sin() can tell you a lot more on what’s best to use. It does not tell how the functions are implemented on the GPU, but does tell which GPU-functions are called.

Learning a new platform has never been so easy. Deep understanding is needed if you want to go beyond “it works”.

Debug software

When you are working on a large project and have to work with proprietary libraries, this is a typical delay factor. I think every software engineer has this experience that the library does not perform as was documented and work-arounds had to be created. Depending on the project and the library, it could take weeks of delay – only sarcasm can describe these situations, as the legal documents were often a lot better than the software documents. When the library was open source, the debugger could step in and give the “aha” that was needed to progress.

When working with drivers it’s about the same. Drivers and compilers are extremely complex and ofcourse your project hits that one bug which nobody encountered before. Now all is open source, you can now step into the driver with the debugger. Moreover, the driver can be compiled with a fix instead of work-around.

Get bugs solved quicker

A trace now now include the driver-stack and the line-numbers. Even a suggestion for a fix can be given. This not only improves reproducibility, but reduces the time to get the fix for all steps. When a fix is suggested AMD only needs to test for regression to accept it.

Have “unimportant” specific improvements done

Say your software is important and in the spotlight, like Blender or the LuxMark benchmark, then you can expect your software gets attention in optimizations. For the rest of us, we have to hope our special code-constructions are alike one that is targeted. This results in many forums-comments and bug-reports being written, for which the compiler team does not have enough time. This is frustrating for both sides.

Now everybody can have their improvements submitted.

Get the feature set extended

Want to have the latest bleeding edge features included? No need to wait for AMD to implement it in the stable drivers.

For large extensions that need to be included officially, the AMD team needs to be consulted because of the implications on the test-suite.

Get support for complete new things

The most interesting things happen when not everybody understands yet what is the potential. Open source makes it possible to actually do it without any permission from AMD or anyone. It now takes a single person to make something completely new.

More often there is opportunity in what is not there yet, and research needs to be done to break the chicken-egg. Optimised 128 bit computing? Easy complex numbers in OpenCL? Native support for Halide as an alternative to OpenCL? All high performance code is there for you.

Forks

Not a goal, but forks are coming for sure. For most forks the goals would be like the ones above, to later be merged with the master branch. There are a few forks that go their own direction – for now hard to predict where those will go.

Improve and increase university collaborations

If the software was protected, it was only possible under strict contracts to work on AMD’s compiler infrastructure. In the end it was easier to focus on the open source backends of LLVM than to go through the legal path.

Universities are very important to find unexpected opportunities, integrate the latest research in, bring potential new employees and do research collaborations. Added bonus for the students is that the GPUs might be allowed to used for games too.

Timour Paltashev (Senior manager, Radeon Technology Group, GPU architecture and global academic connections) can be reached via timour dot paltashev at amd dot com for more info.

Get better support in more Linux distributions

It’s easier to include open source drivers in Linux distributions. These OpenCL drivers do need a binary firmware (which were disassembled and seem to do as advertised), but the discussion is if this is part of the hardware or software to mark it as “libre”.

For HPC, which is mostly Linux-only, this will be a big step forward to work with AMD hardware.

---------------------------

Here at StreamHPC we're cheering AMD's shift to open source, especially for the quicker debugging. It's a big headache less now we can debug to the bone. This makes it possible to deliver quicker, which is certainly received positively by our customers.

We can now put more time into where we're good at: creating fast software.