Profile Inference Revisited
summary
Sampling-based PGO produces incomplete CFG counts and profile inference is NP-hard and hard to approximate, so a new algorithm called profi reconstructs vertex and edge flows by extending minimum-cost flow models, handling dangling blocks and branch-probability hints. It is implemented in LLVM, runs in a few milliseconds on thousand-node functions, closes much of the gap versus instrumentation, yields typical speedups of 3–4% on Facebook and SPEC CPU workloads, and raises an empirical profile-quality metric to about 0.9.
AI-written summary · about
chapters (8)
- 0:00Intro
- 0:24Profile-Guided Optimization (FGO)
- 3:29Importance of High Quality Profile Data
- 4:50What is Profile Data?
- 7:17Challenges
- 10:28Formal Model
- 14:17Implementation
- 16:59Recap
related talks
06mProfile-Guided Optimization in the Go Compiler
34mThe basics of Profile-Guided Optimization (PGO) in Rust
29mEmpirical Observations about Profile-Guided Optimizations for Mainstream C/C++ Compilers
30mProfile-Guided Optimization (PGO) in Rust: unknown parts
19mOptimization-Aware Compiler-Level Event Profiling
21mDiagnosing Compiler Performance by Comparing Optimization Decisions
14mVESPA: Static Profiling for Binary Optimization
23mPoseidon: Profile-Guided Numerical Rewriting at Full-Application Scale
