Profile-Guided Optimization (PGO) in LLVM: current challenges from the adopter perspective

Day 1 | 14:10 | 00:20 | K.3.201 | Alexander Zaitsev


Note: I'm reworking this at the moment, some things won't work.

The stream isn't available yet! Check back at 14:10.
Get involved in the conversation!Join the chat

Profile-Guided Optimization (PGO) is a well-known compiler optimization technique that brings runtime statistics about how an application is executed to the Ahead-of-Time (AoT) compilation model. However, this technique is not widely used nowadays.

In this talk, I want to discuss with a wider audience typical issues that I met with PGO implementation in LLVM-based compilers (like Clang and Rustc). During my work on the Awesome PGO project, I gathered a lot of interesting data points and insights about current PGO issues in the ecosystem (mostly with LLVM-based tools since I prefer using LLVM), and discussed many issues with different stakeholders like end-users, maintainers, and application developers. We will talk about:

  • PGO documentation issues across compilers
  • Different PGO integration states across LLVM-based compilers
  • PGO awareness across the industry
  • Strengths and weaknesses of different PGO modes for different use cases in real-world
  • Top blockers for PGO adoption
  • And many other things!

I believe that after the talk more people will be aware of PGO, aware of usual PGO blockers with LLVM, and know more about how to avoid these limitations in practice.

Target audience: LLVM users (especially LLVM-based compiler engineers and LLVM adopters)