[TCWG CI] 471.omnetpp slowed down by 8% after gcc: Avoid invalid loop transformations in jump threading registry.

Maxim Kuvyrkov maxim.kuvyrkov@linaro.org
Wed Sep 29 11:59:35 GMT 2021


> On 27 Sep 2021, at 19:02, Andrew MacLeod <amacleod@redhat.com> wrote:
> 
> On 9/27/21 11:39 AM, Maxim Kuvyrkov via Gcc wrote:
>>> On 27 Sep 2021, at 16:52, Aldy Hernandez <aldyh@redhat.com> wrote:
>>> 
>>> [CCing Jeff and list for broader audience]
>>> 
>>> On 9/27/21 2:53 PM, Maxim Kuvyrkov wrote:
>>>> Hi Aldy,
>>>> Your patch seems to slow down 471.omnetpp by 8% at -O3.  Could you please take a look if this is something that could be easily fixed?
>>> First of all, thanks for chasing this down.  It's incredibly useful to have these types of bug reports.
>> Thanks, Aldy, this is music to my ears :-).
>> 
>> We have built this automated benchmarking CI that bisects code-speed and code-size regressions down to a single commit.  It is still work-in-progress, and I’m forwarding these reports to patch authors, whose patches caused regressions.  If GCC community finds these useful, we can also setup posting to one of GCC’s mailing lists.
> 
> I second that this sort of thing is incredibly useful.   I don't suppose its easy to do the reverse?... let patch authors know when they've caused a significant improvement? :-)  That would be much less common I suspect, so perhaps not worth it :-)

We do this occasionally, when identifying a regression in a patch revert commit :-).  Seriously, though, it’s an easy enough code-change to the metric, but we are maxing out our benchmarking capacity with current configuration matrix.

> 
> Its certainly very useful when we are making a wholesale change to a pass which we think is beneficial, but aren't sure.
> 
> And a followup question...  Sometimes we have no good way of determining the widespread run-time effects of a change.  You seem to be running SPEC/other things continuously then?

We continuously run SPEC CPU2006 on {arm,aarch64}-{-Os/-O2/-O3}-{no LTO/LTO} matrix for GNU and LLVM toolchains.

In the GNU toolchain we track master branches and latest-release branches of Binutils, GCC and Glibc — and detect code-speed and code-size regressions across all toolchain components.

>   Does it run like once a day/some-time-period, and if you note a regression, narrow it down?

Configurations that track master branches have 3-day intervals.  Configurations that track release branches — 6 days.  If a regression is detected it is narrowed down to component first — binutils, gcc or glibc — and then the commit range of the component is bisected down to a specific commit.  All.  Done.  Automatically.

I will make a presentation on this CI at the next GNU Tools Cauldron.

>  Regardless, I think it could be very useful to be able to see the results of anything you do run at whatever frequency it happens.

Thanks!

--
Maxim Kuvyrkov
https://www.linaro.org



More information about the Gcc mailing list