Learning Branch Probabilities in Compiler from Datacenter Workloads
This work addresses compiler optimization for datacenter applications, offering incremental improvements over existing heuristics.
The paper tackled the problem of estimating branch probabilities in compilers without profile information by learning from datacenter workloads, resulting in a 18-50% improvement in estimation accuracy and up to 8.1% performance gains on benchmarks.
Estimating the probability with which a conditional branch instruction is taken is an important analysis that enables many optimizations in modern compilers. When using Profile Guided Optimizations (PGO), compilers are able to make a good estimation of the branch probabilities. In the absence of profile information, compilers resort to using heuristics for this purpose. In this work, we propose learning branch probabilities from a large corpus of data obtained from datacenter workloads. Using metrics including Root Mean Squared Error, Mean Absolute Error and cross-entropy, we show that the machine learning model improves branch probability estimation by 18-50% in comparison to compiler heuristics. This translates to performance improvement of up to 8.1% on 24 out of a suite of 40 benchmarks with a 1% geomean improvement on the suite. This also results in greater than 1.2% performance improvement in an important search application.