[PATCH] D61540: [PGO] Use sum of count values to fix func entry count and add a check to verify BFI counts

Hongtao Yu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 18 18:13:27 PST 2020


hoy added a comment.

In D61540#2404348 <https://reviews.llvm.org/D61540#2404348>, @xur wrote:

> I'm reviving this patch because this fixes one of our internal bugs.
>
> Before the fix, The BFI counters are way off the raw profile counter:
>
> ` BB : Count=96615607  BFI Count=16
>
>   BB : Count=96615607  BFI Count=16
>   BB : Count=9874441  BFI Count=2
>   BB : Count=9849389  BFI Count=2
>   BB : Count=9928400  BFI Count=2
>   BB : Count=96694618  BFI Count=16
>   BB : Count=30  BFI Count=0
>   BB : Count=96694588  BFI Count=16
>   BB : Count=93506121  BFI Count=16
>   BB : Count=99833531  BFI Count=16
>   BB : Count=99833531  BFI Count=16
>   BB : Count=6933665  BFI Count=1
>   BB : Count=6933665  BFI Count=1
>   BB : Count=4641130  BFI Count=1
>   BB : Count=4634507  BFI Count=1
>   BB : Count=4634507  BFI Count=1
>   BB : Count=3439260  BFI Count=1
>   BB : Count=4634090  BFI Count=1
>   BB : Count=4624009  BFI Count=1
>   BB : Count=4634090  BFI Count=1
>   BB : Count=2299158  BFI Count=0
>   BB : Count=2230547  BFI Count=0
>   BB : Count=2234047  BFI Count=0
>   BB : Count=3500  BFI Count=0
>   BB : Count=2230547  BFI Count=0
>   BB : Count=2225955  BFI Count=0
>   BB : Count=18824  BFI Count=0
>   BB : Count=2230547  BFI Count=0
>   BB : Count=2230547  BFI Count=0
>   BB : Count=2230585  BFI Count=0
>   BB : Count=2229242  BFI Count=0
>   BB : Count=38  BFI Count=0
>   BB : Count=2230547  BFI Count=0
>   BB : Count=68611  BFI Count=0
>   BB : Count=103021581  BFI Count=16
>   BB : Count=103021611  BFI Count=16
>   BB : Count=6406005  BFI Count=1
>
> `
>
> With this patch, we can get:
>
>   `BB : Count=1  BFI Count=6145756
>   BB : Count=96615607  BFI Count=98836277
>   BB : Count=96615607  BFI Count=98836277
>   BB : Count=9874441  BFI Count=10101401
>   BB : Count=9849389  BFI Count=10075773
>   BB : Count=9928400  BFI Count=10075773
>   BB : Count=96694618  BFI Count=98836277
>   BB : Count=30  BFI Count=31
>   BB : Count=96694588  BFI Count=98836246
>   BB : Count=93506121  BFI Count=95577159
>   BB : Count=99833531  BFI Count=95577159
>   BB : Count=99833531  BFI Count=95577159
>   BB : Count=6933665  BFI Count=6844610
>   BB : Count=6933665  BFI Count=6844610
>   BB : Count=4641130  BFI Count=4581520
>   BB : Count=4634507  BFI Count=4574982
>   BB : Count=4634507  BFI Count=4574982
>   BB : Count=3439260  BFI Count=3395087
>   BB : Count=4634090  BFI Count=4574982
>   BB : Count=4624009  BFI Count=4565030
>   BB : Count=4634090  BFI Count=4574982
>   BB : Count=2299158  BFI Count=2269628
>   BB : Count=2230547  BFI Count=2201898
>   BB : Count=2234047  BFI Count=2205353
>   BB : Count=3500  BFI Count=3455
>   BB : Count=2230547  BFI Count=2201898
>   BB : Count=2225955  BFI Count=2197365
>   BB : Count=18824  BFI Count=18582
>   BB : Count=2230547  BFI Count=2201898
>   BB : Count=2230547  BFI Count=2201898
>   BB : Count=2230585  BFI Count=2201936
>   BB : Count=2229242  BFI Count=2200610
>   BB : Count=2230547  BFI Count=2201898
>   BB : Count=68611  BFI Count=67730
>   BB : Count=103021581  BFI Count=98836246
>   BB : Count=103021611  BFI Count=98836277
>   BB : Count=6406005  BFI Count=6145756
>
> `
>
> I will post the updated patch shortly.

Interesting to see the BFI-computed execution count diverse so much from real counts, even for PGO.  I'm wondering if this is due to optimizations in the training build.  For the example above, the BFI-computed block frequencies (ratio, not execution count) seem not diverging too much for each block, compared to the real profile counts.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61540/new/

https://reviews.llvm.org/D61540



More information about the llvm-commits mailing list