From: "Richard Earnshaw (lists)" <Richard.Earnshaw@arm.com>
To: Ramana Radhakrishnan <ramana.radhakrishnan@foss.arm.com>,
Christophe Lyon <christophe.lyon@linaro.org>,
Wilco Dijkstra <Wilco.Dijkstra@arm.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,
Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>
Subject: Re: [PATCH][ARM] Switch to default sched pressure algorithm
Date: Tue, 30 Jul 2019 12:53:00 -0000 [thread overview]
Message-ID: <4cd188af-faad-697d-ed59-fe29fc00ce1c@arm.com> (raw)
In-Reply-To: <223d5901-d9c4-4217-1242-352c3c36ed4d@foss.arm.com>
On 30/07/2019 10:31, Ramana Radhakrishnan wrote:
> On 30/07/2019 10:08, Christophe Lyon wrote:
>> On Mon, 29 Jul 2019 at 18:49, Wilco Dijkstra <Wilco.Dijkstra@arm.com>
>> wrote:
>>>
>>> Currently the Arm backend selects the alternative sched pressure
>>> algorithm.
>>> The issue is that this doesn't take register pressure into account,
>>> and so
>>> it causes significant additional spilling on Arm where there are only 14
>>> allocatable registers. SPEC2006 shows significant codesize reduction
>>> with the default pressure algorithm, so switch back to that. PR77308
>>> shows
>>> ~800 fewer instructions.
>>>
>>> SPECINT2006 is ~0.6% faster on Cortex-A57 together with the other DImode
>>> patches. Overall SPEC codesize is 1.1% smaller.
>>>
>>
>> Hi Wilco,
>>
>> Do you know which benchmarks were used when this was checked-in?
>> It isn't clear from
>> https://gcc.gnu.org/ml/gcc-patches/2012-07/msg00706.html
>
> It was from my time in Linaro and thus would have been a famous embedded
> benchmark, coremark , spec2000 - all tested probably on cortex-a9 and
> Cortex-A15. In addition to this I would like to see what the impact of
> this is on something like Cortex-A53 as the issue rates are likely to be
> different on the schedulers causing different behaviour.
>
>
> I don't have all the notes today for that - maybe you can look into the
> linaro wiki.
>
> I am concerned about taking this patch in without some more data across
> a variety of cores.
>
My concern is the original patch
(https://gcc.gnu.org/ml/gcc-patches/2012-07/msg00706.html) is lacking in
any real detail as to the reasons for the choice of the second algorithm
over the first.
- It's not clear what the win was
- It's not clear what outliers there were and whether they were significant.
And finally, it's not clear if, 7 years later, this is still the best
choice.
If the second algorithm really is better, why is no other target using
it by default?
I think we need a bit more information (both ways). In particular I'm
concerned not just by the overall benchmark average, but also the amount
of variance across the benchmarks. I think the default needs to avoid
significant outliers if at all possible, even if it is marginally less
good on the average.
R.
> Thanks,
> Ramana
>
>
>>
>> Thanks,
>>
>> Christophe
>>
>>> Bootstrap & regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57
>>>
>>> ChangeLog:
>>> 2019-07-29 Wilco Dijkstra <wdijkstr@arm.com>
>>>
>>> Â Â Â Â Â Â Â Â * config/arm/arm.c (arm_option_override): Don't override sched
>>> Â Â Â Â Â Â Â Â pressure algorithm.
>>>
>>> --
>>>
>>> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
>>> index
>>> 81286cadf32f908e045d704128c5e06842e0cc92..628cf02f23fb29392a63d87f561c3ee2fb73a515
>>> 100644
>>> --- a/gcc/config/arm/arm.c
>>> +++ b/gcc/config/arm/arm.c
>>> @@ -3575,11 +3575,6 @@ arm_option_override (void)
>>> Â Â Â if (use_neon_for_64bits == 1)
>>> Â Â Â Â Â Â prefer_neon_for_64bits = true;
>>>
>>> - /* Use the alternative scheduling-pressure algorithm by default. */
>>> -Â maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM,
>>> SCHED_PRESSURE_MODEL,
>>> -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â global_options.x_param_values,
>>> -Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â global_options_set.x_param_values);
>>> -
>>> Â Â Â /* Look through ready list and all of queue for instructions
>>>       relevant for L2 auto-prefetcher. */
>>> Â Â Â int param_sched_autopref_queue_depth;
>>>
>
next prev parent reply other threads:[~2019-07-30 12:50 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-29 17:20 Wilco Dijkstra
2019-07-30 9:29 ` Christophe Lyon
2019-07-30 9:34 ` Ramana Radhakrishnan
2019-07-30 12:53 ` Richard Earnshaw (lists) [this message]
2019-07-30 15:16 ` Wilco Dijkstra
2019-10-10 21:38 ` Ramana Radhakrishnan
2019-10-11 17:33 ` Wilco Dijkstra
2019-10-11 21:44 ` Wilco Dijkstra
2019-10-12 1:07 ` Ramana Radhakrishnan
2019-10-12 0:58 ` Ramana Radhakrishnan
2019-10-15 18:05 ` Christophe Lyon
2019-10-16 12:51 ` Wilco Dijkstra
2019-10-16 15:43 ` Richard Earnshaw (lists)
2019-12-19 13:26 ` Wilco Dijkstra
2019-08-19 15:53 ` Wilco Dijkstra
2019-09-02 12:11 ` Wilco Dijkstra
2019-09-09 17:05 ` Wilco Dijkstra
2019-10-10 17:25 ` Wilco Dijkstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4cd188af-faad-697d-ed59-fe29fc00ce1c@arm.com \
--to=richard.earnshaw@arm.com \
--cc=Kyrylo.Tkachov@arm.com \
--cc=Wilco.Dijkstra@arm.com \
--cc=christophe.lyon@linaro.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=nd@arm.com \
--cc=ramana.radhakrishnan@foss.arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).