Profile Guided Optimization without Profiles: A Machine Learning Approach
Nadav Rotem, Chris Cummins

TL;DR
This paper introduces a machine learning-based method to predict branch probabilities for compiler optimization, eliminating the need for profile data and improving program performance without profiling overhead.
Contribution
A novel statistical approach that infers branch probabilities from large binary datasets, integrated into LLVM to enhance optimization without profile collection.
Findings
Achieves performance gains over non-profiled compilation.
Requires no profiling runs during deployment.
Has negligible impact on compilation time.
Abstract
Profile guided optimization is an effective technique for improving the optimization ability of compilers based on dynamic behavior, but collecting profile data is expensive, cumbersome, and requires regular updating to remain fresh. We present a novel statistical approach to inferring branch probabilities that improves the performance of programs that are compiled without profile guided optimizations. We perform offline training using information that is collected from a large corpus of binaries that have branch probabilities information. The learned model is used by the compiler to predict the branch probabilities of regular uninstrumented programs, which the compiler can then use to inform optimization decisions. We integrate our technique directly in LLVM, supplementing the existing human-engineered compiler heuristics. We evaluate our technique on a suite of benchmarks,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Machine Learning and Data Classification · Software Engineering Research
