Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Feature] Evaluate using Profile-Guided Optimization (PGO) and LLVM BOLT #3226

Closed
zamazan4ik opened this issue Nov 1, 2023 · 0 comments
Closed
Labels
feature A new feature.

Comments

@zamazan4ik
Copy link

zamazan4ik commented Nov 1, 2023

🚀 Feature

Optimize Leo tools (like the compiler) with Profile-Guided Optimization (PGO) and LLVM BOLT.

Motivation

Deliver better performance for the Leo ecosystem. It would be useful for CI/CD pipelines (faster pipelines == cheaper pipelines) and better developer experience (faster write-compile-test feedback loop).

Implementation

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) - e.g. Clang gets +20% compilation speed with PGO, CPython achieves +10% in pybench. So I think optimizing Leo tooling with PGO would be a good idea at least to try.

I can suggest the following action points:

  • Perform PGO benchmarks on the Leo tooling. If it shows improvements - add a note to the documentation about possible improvements in Leo's 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 the Leo tools according to their own workloads.
  • Optimize pre-built binaries with PGO

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

For the Rust projects, I recommend starting with cargo-pgo.

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

Are you willing to open a pull request? (See CONTRIBUTING)

Not yet.

How the Leo compiler performance is critical for the project - I don't know right now. If it's the problem right now - we could leave the issue open for the future improvements.

@zamazan4ik zamazan4ik added the feature A new feature. label Nov 1, 2023
@mikebenfield mikebenfield closed this as not planned Won't fix, can't repro, duplicate, stale Jan 30, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
feature A new feature.
Projects
None yet
Development

No branches or pull requests

2 participants