Skip to main content

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

K.3.201 | Day 1 | 14:10 - 14:30 | Speakers: Alexander Zaitsev

Profile-Guided Optimization (PGO) in LLVM: current challenges from the adopter perspective
A picture of a devroom at FOSDEM 2024
Open in browser
Get involved in the conversation!Join the chat

Notes

Abstract

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)

Speakers

Alexander Zaitsev

Notice: The placeholder video image is licensed under CC BY-SA 4.0. The original image can be found hereChanges made to the image are: Cropped the image to a new ratio, part of the image was cut off.