model-checking / kani

Kani Rust Verifier
https://model-checking.github.io/kani
Apache License 2.0
2.09k stars 84 forks source link

Evaluate Profile-Guided Optimization (PGO) and LLVM BOLT #2751

Open zamazan4ik opened 11 months ago

zamazan4ik commented 11 months ago

Hi!

I did a lot of Profile-Guided Optimization (PGO) benchmarks recently on different kinds of software (including many compilers and compiler-like projects like Clang, Rustc, Clangd, clang-tidy, etc.) - all currently available results are located at https://github.com/zamazan4ik/awesome-pgo . According to the tests, PGO usually helps a lot for compiler-like workloads. I think testing PGO would be a good idea for Kani.

I can suggest to do the following things:

For the Rust projects, I suggest PGO optimizing with cargo-pgo.

adpaco-aws commented 11 months ago

Hi @zamazan4ik , thanks for the suggestions!

Would you mind explaining what "Evaluate PGO" would mean in this context? Kani is essentially a static analysis tool which does not produce executable binaries. More specifically, the Kani compiler replaces the LLVM back-end with an alternative GotoC back-end to generate GotoC programs (the ones accepted by CBMC). What do you think?

zamazan4ik commented 11 months ago

Would you mind explaining what "Evaluate PGO" would mean in this context?

Sure! Here I mean optimizing Kani itself with PGO, so hopefully Kani will work faster.

adpaco-aws commented 11 months ago

Oh, understood. Please let me bring this up for discussion with the team. Thanks!