AMDGPU Developer Proposes Array Register Files For LLVM - Would Help Performance

Written by Michael Larabel in LLVM on 9 October 2018 at 04:04 PM EDT. 2 Comments
LLVM
One of the areas within the open-source AMD Linux graphics driver stack that could benefit from some additional improvements/optimizations is the AMDGPU LLVM compiler back-end. One of the easy ways to see that the AMDGPU LLVM code could be improved upon are the Vulkan benchmarks when compared to AMD's proprietary compiler and there still being some significant wins with that more mature but closed-source shader compilation code. Fortunately, some improvements may be on the way.

At least one of the areas to be explored by AMD developers that could help with the AMDGPU LLVM back-end is in a new concept called Array Register Files. Longtime open-source AMD developer Nicolai Hähnle who often focuses on the LLVM compute stack has proposed this infrastructure addition to the LLVM stack that would help this back-end.

He wants to improve the LLVM infrastructure around the code generation's physical register / register class to represent regular register files more efficiently, which would help in the case of modern AMD GPUs having a ton of registers. There are also some traits about the AMD GPU registers like the ordering of registers and indirect indexing that make a difference too, unlike for many other targets.

Nicolai believes the current LLVM setup around registers isn't very efficient in their case at compile-time and also leads to a run-time performance hit if not properly modeling the properties of their register files.

More of the technical details can be found on the LLVM-dev list. The code on Array Register Files hasn't been started yet but he is currently evaluating feedback; it's good to see they are at least continuing to explore areas of optimization within their LLVM compiler back-end with this being used by the AMDVLK, RADV, and RadeonSI drivers.

From the feedback so far it also looks like Array Register Files would also help out the SimpleV parallelism work being pursued for RISC-V.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week