Graham Yiu via llvm-dev
2017-Oct-03 19:54 UTC
[llvm-dev] PGO information at LTO/thinLTO link step
Hello, My team and I noticed that callsite hotness information is not preserved from compile to link step with LTO/thinLTO enabled. As a result, the link step inlining pass remains conservative when inlining callsites known to be hot (ie. without the 'HotCallSiteThreshold' which is set at 3000 by default). There are likely many cross-module inlining opportunities lost this way, and diminishes the benefit of using LTO/thinLTO+PGO together. In general, does LLVM pass profiling information through the IR to the link step other than branch probabilities and function entry counts? If not, are there plans to do so in the future? For inlining specifically, perhaps we can mark callsites with hot/cold attributes during compile step to ensure LTO inlining will give appropriate threshold bonuses/penalties. Any thoughts/insights/comments would be appreciated. Cheers, Graham Yiu LLVM Compiler Development IBM Toronto Software Lab Office: (905) 413-4077 C2-707/8200/Markham Email: gyiu at ca.ibm.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171003/18c2b6f6/attachment.html>
Xinliang David Li via llvm-dev
2017-Oct-03 20:13 UTC
[llvm-dev] PGO information at LTO/thinLTO link step
With the new PM, the profile information should be properly updated across inline transformations. If you see otherwise, please file a bug .. David On Tue, Oct 3, 2017 at 12:54 PM, Graham Yiu via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hello, > > My team and I noticed that callsite hotness information is not preserved > from compile to link step with LTO/thinLTO enabled. As a result, the link > step inlining pass remains conservative when inlining callsites known to be > hot (ie. without the 'HotCallSiteThreshold' which is set at 3000 by > default). There are likely many cross-module inlining opportunities lost > this way, and diminishes the benefit of using LTO/thinLTO+PGO together. > > In general, does LLVM pass profiling information through the IR to the > link step other than branch probabilities and function entry counts? If > not, are there plans to do so in the future? For inlining specifically, > perhaps we can mark callsites with hot/cold attributes during compile step > to ensure LTO inlining will give appropriate threshold bonuses/penalties. > > Any thoughts/insights/comments would be appreciated. > > Cheers, > > Graham Yiu > LLVM Compiler Development > IBM Toronto Software Lab > Office: (905) 413-4077 C2-707/8200/Markham > Email: gyiu at ca.ibm.com > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://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/20171003/d034abae/attachment.html>
Teresa Johnson via llvm-dev
2017-Oct-03 20:18 UTC
[llvm-dev] PGO information at LTO/thinLTO link step
On Tue, Oct 3, 2017 at 12:54 PM, Graham Yiu via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hello, > > My team and I noticed that callsite hotness information is not preserved > from compile to link step with LTO/thinLTO enabled. As a result, the link > step inlining pass remains conservative when inlining callsites known to be > hot (ie. without the 'HotCallSiteThreshold' which is set at 3000 by > default). There are likely many cross-module inlining opportunities lost > this way, and diminishes the benefit of using LTO/thinLTO+PGO together. >The callsite hotness is passed via the IR, so it should be there in the LTO/ThinLTO backends (during the link step). Can you provide a reproducer where that isn't happening? Teresa> > > In general, does LLVM pass profiling information through the IR to the > link step other than branch probabilities and function entry counts? If > not, are there plans to do so in the future? For inlining specifically, > perhaps we can mark callsites with hot/cold attributes during compile step > to ensure LTO inlining will give appropriate threshold bonuses/penalties. > > Any thoughts/insights/comments would be appreciated. > > Cheers, > > Graham Yiu > LLVM Compiler Development > IBM Toronto Software Lab > Office: (905) 413-4077 C2-707/8200/Markham > Email: gyiu at ca.ibm.com > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-- Teresa Johnson | Software Engineer | tejohnson at google.com | 408-460-2413 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171003/3fa31b3c/attachment.html>
Graham Yiu via llvm-dev
2017-Oct-03 20:38 UTC
[llvm-dev] PGO information at LTO/thinLTO link step
Hi Teresa,
Actually, enabling the new pass manager manually seems to have solved this
issue, so this problem is only valid for the old pass manager.
Thanks,
Graham Yiu
LLVM Compiler Development
IBM Toronto Software Lab
Office: (905) 413-4077 C2-707/8200/Markham
Email: gyiu at ca.ibm.com
From: Teresa Johnson <tejohnson at google.com>
To: Graham Yiu <gyiu at ca.ibm.com>
Cc: llvm-dev <llvm-dev at lists.llvm.org>
Date: 10/03/2017 04:18 PM
Subject: Re: [llvm-dev] PGO information at LTO/thinLTO link step
On Tue, Oct 3, 2017 at 12:54 PM, Graham Yiu via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
Hello,
My team and I noticed that callsite hotness information is not preserved
from compile to link step with LTO/thinLTO enabled. As a result, the link
step inlining pass remains conservative when inlining callsites known to
be hot (ie. without the 'HotCallSiteThreshold' which is set at 3000 by
default). There are likely many cross-module inlining opportunities lost
this way, and diminishes the benefit of using LTO/thinLTO+PGO together.
The callsite hotness is passed via the IR, so it should be there in the
LTO/ThinLTO backends (during the link step). Can you provide a reproducer
where that isn't happening?
Teresa
In general, does LLVM pass profiling information through the IR to the
link step other than branch probabilities and function entry counts? If
not, are there plans to do so in the future? For inlining specifically,
perhaps we can mark callsites with hot/cold attributes during compile
step to ensure LTO inlining will give appropriate threshold
bonuses/penalties.
Any thoughts/insights/comments would be appreciated.
Cheers,
Graham Yiu
LLVM Compiler Development
IBM Toronto Software Lab
Office: (905) 413-4077 C2-707/8200/Markham
Email: gyiu at ca.ibm.com
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
-----------------------------------------------------------
Teresa Software
Johnson | Engineer | tejohnson at google.com 408-460-2413
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20171003/29d9b5af/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20171003/29d9b5af/attachment.gif>