nature icon indicating copy to clipboard operation
nature copied to clipboard

Evaluate Profile-Guided Optimization (PGO) and LLVM BOLT

Open zamazan4ik opened this issue 1 year ago • 0 comments

Hi!

Recently I checked Profile-Guided Optimization (PGO) improvements on multiple projects. The results are here. E.g. PGO results for LLVM-related tooling are here. According to the tests, PGO usually helps with the compiler and compiler-like workloads (like static analysis). That's why I think trying to optimize Nature tooling with PGO can be a good idea.

I can suggest the following action points:

  • Perform PGO benchmarks on Nature (compiler and related tooling). And if it shows improvements - add a note about possible improvements in Nature's compiler performance with PGO.
  • Providing an easier way (e.g. a build option) to build scripts with PGO can be helpful for the end-users and maintainers since they will be able to optimize Nature tooling according to their own workloads.
  • Optimize pre-built binaries

Maybe testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too (Clang and Rustc already use BOLT as an addition to PGO) but I recommend starting from the usual PGO.

Here are some examples of how PGO optimization is integrated in other projects:

By the way, does Nature compiler support compiling a program with PGO (like Clang, GCC, Rustc)? If Nature has an Ahead-of-Time compilation model, it would be a nice feature to have.

zamazan4ik avatar Oct 13 '23 15:10 zamazan4ik