[llvm-dev] [RFC] BOLT: A Framework for Binary Analysis, Transformation, and Optimization

Srinivas, Suresh via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 27 15:32:56 PDT 2020


Hi All,
I want to echo what others have been saying about adding BOLT to the llvm tool set.

I first want to thank to Maksim and his team at Facebook for developing and open sourcing this wonderful technology.

We at Intel have been experimenting with BOLT using the Intel Last Branch Record to improve Code Layout and have found it to be very valuable at

  1.  Reducing Instruction Cache Misses
  2.  Reducing Instruction TLB Misses
  3.  Reducing Pathlength (cpu instructions for unit of work)
  4.  Reducing Stall Cycles due to 1 and 2 and the Overall Cycles
See our technical report https://software.intel.com/content/www/us/en/develop/articles/runtime-optimization-blueprint-IA-optimization-with-last-branch-record.html where we have documented some of our experiences.
In addition we have encountered some hiccups with assembly routines like OpenSSL or v8 BuiltIns but the team has been making it more robust.

Adding it to LLVM will enable

  1.  Making it more robust and well supported for production uses.
  2.  Have more engineers contribute patches
  3.  More research and enhancements

However just adding it to the llvm toolset will not be sufficient. As BOLT operates on binaries, those binaries can be produced by other compilers (gcc, icc or builtins produced by v8 and added into the executable) and there are always new changes (eg gcc 8.x adds the endbr64 instruction) that can potentially break BOLT. I hope the community can collaborate to report and solve those problems early.

We also think with improvements to virtualization technologies like Intel Last Branch Record can be made available more broadly.

Thanks

Suresh Srinivas
Sr Principal Engineer
Intel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201027/b4665e5d/attachment.html>


More information about the llvm-dev mailing list