Google's Propeller Is Beginning To Be Upstreamed For Spinning Faster Program Binaries

Written by Michael Larabel in LLVM on 7 April 2020 at 07:36 PM EDT. 10 Comments
LLVM
We have begun seeing the start of upstreaming on Google's Propeller Framework for offering post-link-time binary optimizations in the LLVM compiler stack to offer measurably faster (re)generated binaries.

Propeller was developed by Google engineers as a result of Facebook's BOLT post-link optimizer for speeding up applications by optimizing the generated binary after being linked.

Google began work on the Propeller Framework last year for LLVM with Facebook's BOLT optimizer not working well in distributed build systems, scalability issues, a very large memory footprint, and the slow performance of BOLT-ing the binaries. Facebook's BOLT generally offers in the area of 2~6% faster binaries for real-world applications from this post-linking binary rewriting/optimizing.

The developers involved wrote last year when announcing Propeller, "Inspired by the performance gains and to address the scalability issue of BOLT, we went about designing a scalable infrastructure that can perform BOLT-like post-link optimizations. In this RFC, we discuss our system, “Propeller”, which can perform profile guided link time binary optimizations in a scalable way and is friendly to distributed build systems. Our system leverages the existing capabilities of the compiler tool-chain and is not a stand alone tool. Like BOLT, our system boosts the performance of optimized binaries via link-time optimizations using accurate profiles of the binary."

According to Google, with real-world applications they found Propeller to optimize just as well as BOLT but with 20% the memory footprint and time overhead.

They have been working on the Propeller Framework a lot and recently we've begun seeing portions of it hitting the LLVM upstream repository. Merged today was LLD support for basic block sections as required by the Propeller framework while merged already was the basic block sections for LLVM merged last month. Other Propeller work is still under review but gives us hope we could potentially see this binary optimizer framework merged for LLVM 11 this autumn.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week