On Tue, Sep 19, 2017 at 8:25 AM, Kugan Vivekanandarajah
<kugan.vivekanandara...@linaro.org> wrote:
> Hi Richard,
>
> On 18 September 2017 at 17:50, Richard Biener
> <richard.guent...@gmail.com> wrote:
>> On Mon, Sep 18, 2017 at 3:36 AM, Kugan Vivekanandarajah
>> <kugan.vivekanandara...@linaro.org> wrote:
>>> Hi Richard,
>>>
>>> On 15 September 2017 at 19:31, Richard Biener
>>> <richard.guent...@gmail.com> wrote:
>>>> On Fri, Sep 15, 2017 at 3:27 AM, Kugan Vivekanandarajah
>>>> <kugan.vivekanandara...@linaro.org> wrote:
>>>>> This patch adds separate params for rtl unroller so that they can be
>>>>> tunned accordingly. Default values I have are based on some testing on
>>>>> aarch64. I am happy to leave it as the current value and set them in
>>>>> the back-end.
>>>>
>>>> PARAM_MAX_AVERAGE_UNROLLED_INSNS is only used by the RTL
>>>> unroller.  Why should we separate PARAM_MAX_UNROLL_TIMES?
>>>>
>>>> PARAM_MAX_UNROLLED_INSNS is only used by gimple passes
>>>> that perform unrolling.  Since GIMPLE is three-address it should
>>>> match RTL reasonably well -- but I'd be ok in having a separate param
>>>> for those.  But I wouldn't name those 'partial'.
>>>>
>>>> That said, those are magic numbers and I expect we can find some
>>>> that work well on RTL and GIMPLE.
>>>
>>> Thanks for the review. I am mostly interested in having separate
>>> params for RTL runtime unrolling as this is different to what GIMPLE
>>> unroller does.
>>
>> Why?  Do you just want to have more magic knobs to machine-auto-tune?
>>
>>> May be I should have separate params only for the
>>> runtime unrolling (or the partial unroller)  and let RTL/GIMPLE share
>>> the other. Any preference here ? Any preference on the name ?
>>>
>>> I am suspecting that RTL unroller which does the same as GIMPLE is
>>> kind of obsolete now?
>>
>> We do not have a GIMPLE loop unroller pass.  On GIMPLE we only do
>> complete peeling as a separate pass and several passes perform
>> unrolling as part of their transform.
>
> Sorry for my terminology. I was referring to complete unrolling of
> loops in tree-sea-loop-ivcanon.c. In any case, what I am interested in
> is partial unrolling of loops in loop-unroll.c. For Falkor at least,
> partially unrolling of small loops that satisfies certain condition
> seems to improve performance. Since this is not enabled by default and
> some of the params are also shared by other optimisations (as you also
> have pointed out), I thought that having separate params for
> loop-unroll.c will limit the interference of changing this params on
> other optimisations. My initial patch was wrong and this should only
> separate params that are shared.

Well, as the complete peeling doesn't use those params but only
passes that perform "partial" unrolling I see nothing wrong with sharing
the parameters.

> And also, is anyone working on a partial unroller for Gimple? I would
> like to give it a try if no one is working on this. Is there any
> preferences here.

People have talked about it but I'm not aware of actual implementations.
Though an implementation is quite trivial with the interesting piece being
the costing (as usual).

Richard.

> Thanks,
> Kugan
>
>
>
>
>> Richard.
>>
>>> Thanks,
>>> Kugan
>>>
>>>
>>>
>>>
>>>
>>>> Richard.
>>>>
>>>>>
>>>>> Thanks,
>>>>> Kugan
>>>>>
>>>>>
>>>>> gcc/ChangeLog:
>>>>>
>>>>> 2017-09-12  Kugan Vivekanandarajah  <kug...@linaro.org>
>>>>>
>>>>>     * loop-unroll.c (decide_unroll_constant_iterations): Use new params.
>>>>>     (decide_unroll_runtime_iterations): Likewise.
>>>>>     (decide_unroll_stupid): Likewise.
>>>>>     * params.def (DEFPARAM): Separate and add new params for rtl unroller.

Reply via email to