[llvm-dev] How to get the loop hotness data in a suite ?

Min-Yih Hsu via llvm-dev
Thu, 01 Oct 2020 17:11:19 -0000

> On Sep 30, 2020, at 5:44 PM, Stefanos Baziotis via llvm-dev <llvm-dev at
lists.llvm.org> wrote:
>
> Hi everybody,
>
> I'm trying to get loop hotness data across a suite (e.g. the llvm
test-suite). Ideally,
> this would be a list that for each loop would list how many times it was
entered and what
> was its iteration count (at least the latter). The closest thing I could
come up with is:
> - clang -fprofile-instr-generate (without opts) to get a .profraw
> - Get the .profdata
> - Give that back to clang with -fprofile-instr-use and generate .ll
> - I note that here we get "branch_weights" stats, so if a branch
is a back-edge,
> it basically gives us the iteration count. For example, check the bottom of
this file: https://pastebin.com/ZnQqJdTN <https://pastebin.com/ZnQqJdTN>
which was created with the procedure above.
> - Then, create a custom pass that goes through every loop and gathers this
"branch_weights" data.
I second on this approach

>
> I feel like this is both not very accurate and overly complicated for
something that I
> guess a lot of people probably have needed to gather in the past. Is there
an easier
> solution?
I don’t think PGO-based approach is very cumbersome. And it’s a lot more
accurate than pure static approach. In case you don’t know, LLVM Test Suite has
native support to build different stages of PGO program by toggling some cmake
variable.
If I remember correctly, here are the steps:
1. Set cmake variable TEST_SUITE_PROFILE_GENERATE=ON, TEST_SUITE_IR_PGO=ON
2. `ninja all` + `llvm-lit -sv .` to build  and collect profile data
3. Modify variables in CMakeCache: TEST_SUITE_PROFILE_GENERATE=OFF,
TEST_SUITE_PROFILE_USE=ON
4. ninja all

>
> Thanks,
> Stefanos
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20201001/b7117184/attachment.html>