Re: [Mesa-dev] V7 Loop unrolling in NIR

2016-12-19 Thread Timothy Arceri
On Mon, 2016-12-19 at 17:38 +1100, Timothy Arceri wrote:
> On Sun, 2016-12-18 at 21:58 -0800, Jason Ekstrand wrote:
> > On Dec 18, 2016 9:48 PM, "Timothy Arceri"  > .c
> > om> wrote:
> > V7:
> >  - paritally out of ssa in unrolling pass to avoid phis
> >  - lots of simplification/tidy ups in the analysis pass
> >  - if_uses bug fix (missing functionality) in lcssa fixed
> >  - better support for non trivial loop terminators
> >  - fixed all loop HURT except 1 that is too big to unroll.
> > 
> > total instructions in shared programs: 12584624 -> 12584621 (-
> > 0.00%)
> > instructions in affected programs: 68507 -> 68504 (-0.00%)
> > helped: 70
> > HURT: 170
> > 
> > total cycles in shared programs: 24146 -> 241476226 (-0.01%)
> > cycles in affected programs: 4060722 -> 4036952 (-0.59%)
> > helped: 1241
> > HURT: 1278
> > 
> > total loops in shared programs: 4245 -> 2948 (-30.55%)
> > loops in affected programs: 1535 -> 238 (-84.50%)
> > helped: 1142
> > HURT: 1
> > 
> > That is a *lot* of loops that we were leaving intact for no good
> > reason.  Any idea how many of those were because the glsl pass
> > didn't
> > know what to do weight them vs. the heuristic subtly changing?
> 

Oh whoops I need to learn how to read. Doing things the other way
around if I remove the instruction and iterations limit from the GLSL
IR pass I get ... a frozen PC for a few minutes processing various
shaders and eventually it crashes processing a deus ex shader.

Looking at the history is seems the heuristics might have more to do
with GLSL IR being slow than the actual output being too large.

commit be5f27a84d0d4efb57071d9d7ecda061223d03ef
Author: Eric Anholt 
Date:   Tue Feb 21 13:37:49 2012 -0800

glsl: Refine the loop instruction counting.

Before, we were only counting top-level instructions.  But if we
have
an assignment of a giant expression tree (such as the ones
eventually
generated by glsl-fs-unroll), we were counting the same as an
assignment of a variable deref.

glsl-fs-unroll-explosion now fails in a reasonable amount of time
on
i965 because the unrolling didn't go ridiculously far.

Reviewed-by: Kenneth Graunke 

commit 67007080b716c7e51039a381f407ababd68230f7
Author: Mathias Fröhlich 
Date:   Wed Jan 25 17:35:01 2012 +0100

glsl: Avoid excessive loop unrolling.

Avoid unrollong loops that are either nested loops or
where the loop body times the unroll count is huge.

The change is far from being perfect but it extends the
loop unrolling decision heuristic by some additional
safeguard. In particular this cuts down compilation of
a shader precomputing atmospheric scattering integral
tables containing two nesting levels in a loop from
something way beyond some minutes (I never waited for
it to finish) to some fractions of a second.

This fixes piglit tests glsl-fs-unroll-explosion and
glsl-vs-unroll-explosion on r600g.

Reviewed-by: Eric Anholt 
Signed-off-by: Mathias Fröhlich 

> Are you sending html emails lately? Your comments have been
> indistinguishable from the original email in a number of emails
> lately.
> 
> I disable instruction/iteration unrolling restrictions and it helped
> on
> ly 13 loops.
> 
> For the record V7 unrolls around 500 more loops than V6. I think
> handling phis as a conditional might give us another good jump. I
> would
> need to dig a bit deeper to be sure why so many loops remain.
> 
> I'm happy to work on improving things further once we land the
> initial
> version.
> 
> > 
> > 
> > LOST:   26
> > GAINED: 16
> > ___
> > mesa-dev mailing list
> > mesa-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > 
> > ___
> > mesa-dev mailing list
> > mesa-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] V7 Loop unrolling in NIR

2016-12-18 Thread Timothy Arceri
On Sun, 2016-12-18 at 21:58 -0800, Jason Ekstrand wrote:
> On Dec 18, 2016 9:48 PM, "Timothy Arceri"  om> wrote:
> V7:
>  - paritally out of ssa in unrolling pass to avoid phis
>  - lots of simplification/tidy ups in the analysis pass
>  - if_uses bug fix (missing functionality) in lcssa fixed
>  - better support for non trivial loop terminators
>  - fixed all loop HURT except 1 that is too big to unroll.
> 
> total instructions in shared programs: 12584624 -> 12584621 (-0.00%)
> instructions in affected programs: 68507 -> 68504 (-0.00%)
> helped: 70
> HURT: 170
> 
> total cycles in shared programs: 24146 -> 241476226 (-0.01%)
> cycles in affected programs: 4060722 -> 4036952 (-0.59%)
> helped: 1241
> HURT: 1278
> 
> total loops in shared programs: 4245 -> 2948 (-30.55%)
> loops in affected programs: 1535 -> 238 (-84.50%)
> helped: 1142
> HURT: 1
> 
> That is a *lot* of loops that we were leaving intact for no good
> reason.  Any idea how many of those were because the glsl pass didn't
> know what to do weight them vs. the heuristic subtly changing?

Are you sending html emails lately? Your comments have been
indistinguishable from the original email in a number of emails lately.

I disable instruction/iteration unrolling restrictions and it helped on
ly 13 loops.

For the record V7 unrolls around 500 more loops than V6. I think
handling phis as a conditional might give us another good jump. I would
need to dig a bit deeper to be sure why so many loops remain.

I'm happy to work on improving things further once we land the initial
version.

> 
> 
> LOST:   26
> GAINED: 16
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] V7 Loop unrolling in NIR

2016-12-18 Thread Jason Ekstrand
On Dec 18, 2016 9:48 PM, "Timothy Arceri" 
wrote:

V7:
 - paritally out of ssa in unrolling pass to avoid phis
 - lots of simplification/tidy ups in the analysis pass
 - if_uses bug fix (missing functionality) in lcssa fixed
 - better support for non trivial loop terminators
 - fixed all loop HURT except 1 that is too big to unroll.

total instructions in shared programs: 12584624 -> 12584621 (-0.00%)
instructions in affected programs: 68507 -> 68504 (-0.00%)
helped: 70
HURT: 170

total cycles in shared programs: 24146 -> 241476226 (-0.01%)
cycles in affected programs: 4060722 -> 4036952 (-0.59%)
helped: 1241
HURT: 1278

total loops in shared programs: 4245 -> 2948 (-30.55%)
loops in affected programs: 1535 -> 238 (-84.50%)
helped: 1142
HURT: 1


That is a *lot* of loops that we were leaving intact for no good reason.
Any idea how many of those were because the glsl pass didn't know what to
do weight them vs. the heuristic subtly changing?


LOST:   26
GAINED: 16
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] V7 Loop unrolling in NIR

2016-12-18 Thread Timothy Arceri
V7:
 - paritally out of ssa in unrolling pass to avoid phis
 - lots of simplification/tidy ups in the analysis pass
 - if_uses bug fix (missing functionality) in lcssa fixed
 - better support for non trivial loop terminators
 - fixed all loop HURT except 1 that is too big to unroll.

total instructions in shared programs: 12584624 -> 12584621 (-0.00%)
instructions in affected programs: 68507 -> 68504 (-0.00%)
helped: 70
HURT: 170

total cycles in shared programs: 24146 -> 241476226 (-0.01%)
cycles in affected programs: 4060722 -> 4036952 (-0.59%)
helped: 1241
HURT: 1278

total loops in shared programs: 4245 -> 2948 (-30.55%)
loops in affected programs: 1535 -> 238 (-84.50%)
helped: 1142
HURT: 1

LOST:   26
GAINED: 16
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev