[llvm] [clang] [Clang][CMake] Add CSSPGO support to LLVM_BUILD_INSTRUMENTED (PR #79942)

Amir Ayupov via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 29 21:56:22 PST 2024


aaupov wrote:

> Do you have benchmarks on how well this performs relative to standard IRPGO (or on top of it)?

Couple of things to untangle here:
1. In general, CSSPGO is meant as a more practical alternative for IRPGO thanks to i) the use of sampled profile, ii) context-sensitivity. However, IRPGO is still expected to provide better performance in all cases where it's applicable thanks to accurate profile information. 
2. Due to that, I don't think it makes sense to apply CSSPGO on top of IRPGO, and CMake automation would not permit mixing the two (both implemented as LLVM_BUILD_INSTRUMENTED exclusive options).
3. [CSSPGO RFC](https://lists.llvm.org/pipermail/llvm-dev/2020-August/144101.html) has direct perf comparison of early implementation of CSSPGO vs IRPGO on Spec06:
<img width="1491" alt="Screenshot 2024-01-29 at 9 43 17 PM" src="https://github.com/llvm/llvm-project/assets/876514/a921e324-6b5d-4660-9928-0fb0c994649a">
4. With CMake stuff implemented in this diff, it's expected that the amount of profile information collected would be miniscule (in-tree perf-training only has a single hello world source file) and inadequate for getting much perf boost with CSSPGO (it even prints the warning that it needs 6985000.0x more profile). 
5. But I'll kick out a perf run anyway to see what's the starting point. If it's zero, I'll try building different targets (in-tree or from LLVM Test Suite) to identify a viable profiling workload, but it's outside of scope of this diff.

https://github.com/llvm/llvm-project/pull/79942


More information about the cfe-commits mailing list