Hi Teresa, Impressive results, indeed! (But no less is expected from an Itanium alumni... ;-)) One question, if you don't mind. In the blog post you wrote: "In a few cases ThinLTO even outperforms full LTO, most likely because the higher scalability of ThinLTO allows using a more aggressive backend optimization pipeline (similar to that of a non-LTO build)." Is it due to optimizations not working (in full LTO case) after hitting some internal limits? If so, my understanding is that these limits are expressed in units not affected by IPA representation (like function size, number of basic blocks, etc, *not* total memory consumption) -- how ThinLTO helps to stay within them? Yours, Andrey> 22 июля 2016 г., в 22:36, Teresa Johnson via llvm-dev <llvm-dev at lists.llvm.org> написал(а): > > Hi Vikram, > > Thanks! > > I'm not sure what part got committed in the 3.8 timeframe - it looks like that was released back in March? A number of fixes have gone in since then so I would stick with a more recent version. The ThinLTO in trunk and (presumably 3.9 which seems to have not yet gone out?) is complete and working with multiple threads using gold. > > The distributed build support is also in (which needs support in the build system however), although I am fixing a few bugs right now that popped up in testing our internal apps. Which distributed build system do you use? We have support coming out in Bazel, which is our open sourced distributed build system. > > Let me know if you run into any issues or have any other questions! > > Teresa > > >> On Fri, Jul 22, 2016 at 12:15 PM, Adve, Vikram Sadanand via llvm-dev <llvm-dev at lists.llvm.org> wrote: >> First, kudos on the ThinLTO results reported in your blog post — they’re impressive and the system sounds really well engineered. >> >> I’m starting to try it out on a large piece of software and I’d like to make sure I know what to expect. The blog said it will be available in clang-3.9 but both clang-3.8 and trunk seem to have some degree of support for it. What is the status of ThinLTO in 3.8 (preferably) or trunk (otherwise)? Are either of these usable with multiple threads? What about for a distributed build? >> >> Thanks! >> >> -—Vikram >> >> // Vikram S. Adve >> // Professor, Department of Computer Science >> // University of Illinois at Urbana-Champaign >> // vadve at illinois.edu >> // http://llvm.org >> >> _______________________________________________ >> 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 > _______________________________________________ > 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/20160723/16215d52/attachment.html>
Thanks, Andrey. The reason is that we enable a more aggressive pass pipeline in the ThinLTO backends, Mehdi added this (see https://reviews.llvm.org/D17115). For full LTO it is too expensive to have the more aggressive pass pipeline. Teresa On Fri, Jul 22, 2016 at 3:34 PM, <andreybokhanko at gmail.com> wrote:> Hi Teresa, > > Impressive results, indeed! (But no less is expected from an Itanium > alumni... ;-)) > > One question, if you don't mind. In the blog post you wrote: "In a few > cases ThinLTO even outperforms full LTO, most likely because the higher > scalability of ThinLTO allows using a more aggressive backend optimization > pipeline (similar to that of a non-LTO build)." Is it due to optimizations > not working (in full LTO case) after hitting some internal limits? If so, > my understanding is that these limits are expressed in units not affected > by IPA representation (like function size, number of basic blocks, etc, > *not* total memory consumption) -- how ThinLTO helps to stay within them? > > Yours, > Andrey > > 22 июля 2016 г., в 22:36, Teresa Johnson via llvm-dev < > llvm-dev at lists.llvm.org> написал(а): > > Hi Vikram, > > Thanks! > > I'm not sure what part got committed in the 3.8 timeframe - it looks like > that was released back in March? A number of fixes have gone in since then > so I would stick with a more recent version. The ThinLTO in trunk and > (presumably 3.9 which seems to have not yet gone out?) is complete and > working with multiple threads using gold. > > The distributed build support is also in (which needs support in the build > system however), although I am fixing a few bugs right now that popped up > in testing our internal apps. Which distributed build system do you use? We > have support coming out in Bazel, which is our open sourced distributed > build system. > > Let me know if you run into any issues or have any other questions! > > Teresa > > > On Fri, Jul 22, 2016 at 12:15 PM, Adve, Vikram Sadanand via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> First, kudos on the ThinLTO results reported in your blog post — they’re >> impressive and the system sounds really well engineered. >> >> I’m starting to try it out on a large piece of software and I’d like to >> make sure I know what to expect. The blog said it will be available in >> clang-3.9 but both clang-3.8 and trunk seem to have some degree of support >> for it. What is the status of ThinLTO in 3.8 (preferably) or trunk >> (otherwise)? Are either of these usable with multiple threads? What about >> for a distributed build? >> >> Thanks! >> >> -—Vikram >> >> // Vikram S. Adve >> // Professor, Department of Computer Science >> // University of Illinois at Urbana-Champaign >> // vadve at illinois.edu >> // http://llvm.org >> >> _______________________________________________ >> 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 > > _______________________________________________ > 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/20160722/195b7960/attachment.html>
> On Jul 22, 2016, at 3:34 PM, via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hi Teresa, > > Impressive results, indeed! (But no less is expected from an Itanium alumni... ;-)) > > One question, if you don't mind. In the blog post you wrote: "In a few cases ThinLTO even outperforms full LTO, most likely because the higher scalability of ThinLTO allows using a more aggressive backend optimization pipeline (similar to that of a non-LTO build)." Is it due to optimizations not working (in full LTO case) after hitting some internal limits?No, is a static decision on the optimization pipeline: we run strictly more optimization passes with ThinLTO. See: populateThinLTOPassManager vs populateLTOPassManager: https://github.com/llvm-mirror/llvm/blob/master/lib/Transforms/IPO/PassManagerBuilder.cpp#L773 — Mehdi> If so, my understanding is that these limits are expressed in units not affected by IPA representation (like function size, number of basic blocks, etc, *not* total memory consumption) -- how ThinLTO helps to stay within them? > > Yours, > Andrey > > 22 июля 2016 г., в 22:36, Teresa Johnson via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> написал(а): > >> Hi Vikram, >> >> Thanks! >> >> I'm not sure what part got committed in the 3.8 timeframe - it looks like that was released back in March? A number of fixes have gone in since then so I would stick with a more recent version. The ThinLTO in trunk and (presumably 3.9 which seems to have not yet gone out?) is complete and working with multiple threads using gold. >> >> The distributed build support is also in (which needs support in the build system however), although I am fixing a few bugs right now that popped up in testing our internal apps. Which distributed build system do you use? We have support coming out in Bazel, which is our open sourced distributed build system. >> >> Let me know if you run into any issues or have any other questions! >> >> Teresa >> >> >> On Fri, Jul 22, 2016 at 12:15 PM, Adve, Vikram Sadanand via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> First, kudos on the ThinLTO results reported in your blog post — they’re impressive and the system sounds really well engineered. >> >> I’m starting to try it out on a large piece of software and I’d like to make sure I know what to expect. The blog said it will be available in clang-3.9 but both clang-3.8 and trunk seem to have some degree of support for it. What is the status of ThinLTO in 3.8 (preferably) or trunk (otherwise)? Are either of these usable with multiple threads? What about for a distributed build? >> >> Thanks! >> >> -—Vikram >> >> // Vikram S. Adve >> // Professor, Department of Computer Science >> // University of Illinois at Urbana-Champaign >> // vadve at illinois.edu <mailto:vadve at illinois.edu> >> // http://llvm.org <http://llvm.org/> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> >> >> >> >> -- >> Teresa Johnson | Software Engineer | tejohnson at google.com <mailto:tejohnson at google.com> | 408-460-2413 >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> > _______________________________________________ > 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/20160722/cd2c62d0/attachment.html>
OK, got it. Thank you Teresa and Mehdi! Yours, Andrey> 23 июля 2016 г., в 2:13, Mehdi Amini <mehdi.amini at apple.com> написал(а): > > >> On Jul 22, 2016, at 3:34 PM, via llvm-dev <llvm-dev at lists.llvm.org> wrote: >> >> Hi Teresa, >> >> Impressive results, indeed! (But no less is expected from an Itanium alumni... ;-)) >> >> One question, if you don't mind. In the blog post you wrote: "In a few cases ThinLTO even outperforms full LTO, most likely because the higher scalability of ThinLTO allows using a more aggressive backend optimization pipeline (similar to that of a non-LTO build)." Is it due to optimizations not working (in full LTO case) after hitting some internal limits? > > No, is a static decision on the optimization pipeline: we run strictly more optimization passes with ThinLTO. > > See: populateThinLTOPassManager vs populateLTOPassManager: https://github.com/llvm-mirror/llvm/blob/master/lib/Transforms/IPO/PassManagerBuilder.cpp#L773 > > — > Mehdi > > >> If so, my understanding is that these limits are expressed in units not affected by IPA representation (like function size, number of basic blocks, etc, *not* total memory consumption) -- how ThinLTO helps to stay within them? >> >> Yours, >> Andrey >> >>> 22 июля 2016 г., в 22:36, Teresa Johnson via llvm-dev <llvm-dev at lists.llvm.org> написал(а): >>> >>> Hi Vikram, >>> >>> Thanks! >>> >>> I'm not sure what part got committed in the 3.8 timeframe - it looks like that was released back in March? A number of fixes have gone in since then so I would stick with a more recent version. The ThinLTO in trunk and (presumably 3.9 which seems to have not yet gone out?) is complete and working with multiple threads using gold. >>> >>> The distributed build support is also in (which needs support in the build system however), although I am fixing a few bugs right now that popped up in testing our internal apps. Which distributed build system do you use? We have support coming out in Bazel, which is our open sourced distributed build system. >>> >>> Let me know if you run into any issues or have any other questions! >>> >>> Teresa >>> >>> >>>> On Fri, Jul 22, 2016 at 12:15 PM, Adve, Vikram Sadanand via llvm-dev <llvm-dev at lists.llvm.org> wrote: >>>> First, kudos on the ThinLTO results reported in your blog post — they’re impressive and the system sounds really well engineered. >>>> >>>> I’m starting to try it out on a large piece of software and I’d like to make sure I know what to expect. The blog said it will be available in clang-3.9 but both clang-3.8 and trunk seem to have some degree of support for it. What is the status of ThinLTO in 3.8 (preferably) or trunk (otherwise)? Are either of these usable with multiple threads? What about for a distributed build? >>>> >>>> Thanks! >>>> >>>> -—Vikram >>>> >>>> // Vikram S. Adve >>>> // Professor, Department of Computer Science >>>> // University of Illinois at Urbana-Champaign >>>> // vadve at illinois.edu >>>> // http://llvm.org >>>> >>>> _______________________________________________ >>>> 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 >>> _______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> _______________________________________________ >> 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/20160723/8b6206ef/attachment.html>