GNU Tools Cauldron 2025

GNU Tools Cauldron 2025

Kugan Vivekanandarajah

Kugan Vivekanandarajah is a CPU Compiler Engineer at NVIDIA. His work is primarily focused on implementing and enhancing optimizations for the AArch64 architecture.


Session

09-28
11:00
15min
Bringing AutoFDO to AARCH64: Low-Overhead, Profile Guided Optimization for AArch64
Kugan Vivekanandarajah

Profile-Guided Optimization (PGO) is a powerful technique for achieving performance gains, yet its instrumentation-based implementation imposes a high overhead that limits its adoption in production environments. AutoFDO solves this by using low-overhead hardware based sampling to gather profile data, making it an ideal approach for continuous, real-world optimization.
This presentation details the work required to enable AutoFDO for AArch64 within the GNU toolchain and a state of the world for AutoFDO. We will cover the key architectural features that make efficient, sampling-based profiling possible. We cover the hardware pre-requisites and implications of using the various hardware units available on the AArch64 architecture (namely SPE and BRBE).
We will discuss the specific technical challenges encountered, including the crucial task of accurately annotating the pre-optimization IR representation using a profile gathered from an already optimized binary. We will detail the fixes implemented in the AutoFDO tools and GCC to handle the discrepancies that arise from this process. This ensures that the profile data correctly drives optimizations like inlining and block reordering, even with significant

Auditorium B002 (170)