[llvm-dev] Interprocedural DSE for -ftrivial-auto-var-init
JF Bastien via llvm-dev
llvm-dev at lists.llvm.org
Mon May 13 19:46:52 PDT 2019
Great, thank you for getting this started!
> On May 13, 2019, at 7:32 PM, Vitaly Buka <vitalybuka at google.com> wrote:
>
> https://reviews.llvm.org/D61879
>
> From: Vitaly Buka <vitalybuka at google.com>
> Date: Mon, May 13, 2019 at 10:23 AM
> To: JF Bastien
> Cc: Amara Emerson, llvm-dev, Peter Collingbourne
>
>> I have dirty prof-of-concept patch. I am going to rewrite pieces of it during the May starting now.
>> Today it's a new pass which does cross-block DSE, module DSE, and global DSE.
>> So far the module DSE is the most useful and probably easy integrate to existing DSE.
>>
>> From: JF Bastien <jfbastien at apple.com>
>> Date: Mon, May 13, 2019 at 9:55 AM
>> To: Vitaly Buka
>> Cc: Amara Emerson, llvm-dev, Peter Collingbourne
>>
>>>
>>>
>>>> On May 10, 2019, at 8:59 PM, Vitaly Buka via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>>>
>>>> Sorry for delay, I was busy with other stuff.
>>>> CTMark results.
>>>>
>>>> dse is the current DSE.
>>>> dsem is my experimental module level DSE.
>>>> dsem runs after dse, so it's additionally deleted stores.
>>>>
>>>> -O3
>>>> dse - Number of stores deleted 3033
>>>> dsem - Number of deleted writes 3148
>>>>
>>>> -O3 -ftrivial-auto-var-init=pattern
>>>> dse - Number of stores deleted 5618
>>>> dsem - Number of deleted writes 3840
>>>>
>>>> -O3 -flto
>>>> dse - Number of stores deleted 3985
>>>> dsem - Number of deleted writes 3838
>>>>
>>>> -O3 -flto -ftrivial-auto-var-init=pattern
>>>> dse - Number of stores deleted 6461
>>>> dsem - Number of deleted writes 4215
>>>>
>>>> -Os
>>>> dse - Number of stores deleted 1443
>>>> dsem - Number of deleted writes 1517
>>>>
>>>> -Os -ftrivial-auto-var-init=pattern
>>>> dse - Number of stores deleted 3951
>>>> dsem - Number of deleted writes 2259
>>>>
>>>> -Oz
>>>> dse - Number of stores deleted 1072
>>>> dsem - Number of deleted writes 574
>>>>
>>>> -Oz -ftrivial-auto-var-init=pattern
>>>> dse - Number of stores deleted 3420
>>>> dsem - Number of deleted writes 1637
>>>
>>> This looks great! Do you have a patch ready to go?
>>>
>>>
>>>> From: Amara Emerson <aemerson at apple.com>
>>>> Date: Tue, Apr 16, 2019 at 12:10 PM
>>>> To: Vitaly Buka
>>>> Cc: Alexander Potapenko, llvm-dev, Peter Collingbourne
>>>>
>>>>> Can you post numbers for how many stores get eliminated from CTMark?
>>>>>
>>>>>> On Apr 16, 2019, at 11:45 AM, Vitaly Buka <vitalybuka at google.com> wrote:
>>>>>>
>>>>>> I tried -Os and effect of new approach significantly increases.
>>>>>> I run regular DSE and immediately myDSE. With -Os myDSE removes more than 50% of DSE number.
>>>>>> Which is expected as -Os inlines less and regular DSE can't remove over function call.
>>>>>>
>>>>>>> On Tue, Apr 16, 2019 at 7:11 AM Alexander Potapenko <glider at google.com> wrote:
>>>>>>> On Mon, Apr 15, 2019 at 11:02 PM Amara Emerson via llvm-dev
>>>>>>> <llvm-dev at lists.llvm.org> wrote:
>>>>>>> >
>>>>>>> >
>>>>>>> > > On Apr 15, 2019, at 1:51 PM, Vitaly Buka via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>>>>>> > >
>>>>>>> > > Hi JF,
>>>>>>> > >
>>>>>>> > > I've heard that you are interested DSE improvements and maybe we need to be in sync.
>>>>>>> > > So far I experimented with following DSE improvements:
>>>>>>> > >
>>>>>>> > > * Cross-block DSE, it eliminates additional 7% stores comparing to existing DSE. But it's not visible on benchmarks.
>>>>>>> > I take it you couldn’t see any runtime impact? If there’s code size improvements that could also be useful, CTMark in the llvm test suite is a useful subset of benchmarks to check this on (as a baseline use -Os to compare code size).
>>>>>>> >
>>>>>>> > Thanks,
>>>>>>> > Amara
>>>>>>> > >
>>>>>>> > > * Cross-block + Interprocedural analysis to annotate each function argument with:
>>>>>>> > > - can read before write
>>>>>>> > > - will always write
>>>>>>> > > This annotations gets me 20% stores deleted additional to the current DSE.
>>>>>>> I believe we can only benefit from removing extra stores.
>>>>>>> Hot functions in existing benchmarks are probably optimized good
>>>>>>> enough already, but speeding up the long tail is also important.
>>>>>>> Also, at least the repro in
>>>>>>> https://bugs.llvm.org/show_bug.cgi?id=40527 has been extracted from a
>>>>>>> real kernel benchmark (hackbench), where this extra store costed us
>>>>>>> 0.45%
>>>>>>>
>>>>>>> > > This is on LLVM codebase with -ftrivial-auto-var-init=patter.
>>>>>>> > >
>>>>>>> > > As-is it's less than I expected, so I would like to find good benchmark to decide if we should work to make production code from my experiment.
>>>>>>> > >
>>>>>>> > > So now I am also planing to try to extend that to whole program analysis.
>>>>>>> > > I will cleanup my code and upload this during this weak, if anyone wants to try.
>>>>>>> > >
>>>>>>> > > Vitaly.
>>>>>>> > > _______________________________________________
>>>>>>> > > LLVM Developers mailing list
>>>>>>> > > llvm-dev at lists.llvm.org
>>>>>>> > > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>>> >
>>>>>>> > _______________________________________________
>>>>>>> > LLVM Developers mailing list
>>>>>>> > llvm-dev at lists.llvm.org
>>>>>>> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Alexander Potapenko
>>>>>>> Software Engineer
>>>>>>>
>>>>>>> Google Germany GmbH
>>>>>>> Erika-Mann-Straße, 33
>>>>>>> 80636 München
>>>>>>>
>>>>>>> Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
>>>>>>> Registergericht und -nummer: Hamburg, HRB 86891
>>>>>>> Sitz der Gesellschaft: Hamburg
>>>>>
>>>> _______________________________________________
>>>> 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/20190513/17abc753/attachment-0001.html>
More information about the llvm-dev
mailing list