[Mesa-dev] [PATCH 17/22] nir: Narrow some dot product operations

Samuel Iglesias Gonsálvez siglesias at igalia.com
Tue Feb 27 11:58:32 UTC 2018


Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>


On 24/02/18 00:56, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> On vector platforms, this helps elide some constant loads.
>
> No changes on Broadwell or Skylake.
>
> Haswell
> total instructions in shared programs: 13093793 -> 13060163 (-0.26%)
> instructions in affected programs: 1277532 -> 1243902 (-2.63%)
> helped: 13216
> HURT: 95
> helped stats (abs) min: 1 max: 18 x̄: 2.56 x̃: 2
> helped stats (rel) min: 0.21% max: 20.00% x̄: 3.63% x̃: 2.78%
> HURT stats (abs)   min: 1 max: 6 x̄: 1.77 x̃: 1
> HURT stats (rel)   min: 0.09% max: 5.56% x̄: 1.25% x̃: 1.19%
> 95% mean confidence interval for instructions value: -2.57 -2.49
> 95% mean confidence interval for instructions %-change: -3.65% -3.54%
> Instructions are helped.
>
> total cycles in shared programs: 409580819 -> 409268463 (-0.08%)
> cycles in affected programs: 71730652 -> 71418296 (-0.44%)
> helped: 9898
> HURT: 2352
> helped stats (abs) min: 2 max: 16014 x̄: 37.08 x̃: 16
> helped stats (rel) min: <.01% max: 35.55% x̄: 6.26% x̃: 4.50%
> HURT stats (abs)   min: 2 max: 276 x̄: 23.25 x̃: 6
> HURT stats (rel)   min: <.01% max: 40.00% x̄: 3.54% x̃: 1.97%
> 95% mean confidence interval for cycles value: -33.19 -17.80
> 95% mean confidence interval for cycles %-change: -4.50% -4.26%
> Cycles are helped.
>
> total fills in shared programs: 82059 -> 82052 (<.01%)
> fills in affected programs: 21 -> 14 (-33.33%)
> helped: 7
> HURT: 0
>
> Sandy Bridge and Ivy Bridge had similar results (Ivy Bridge shown)
> total instructions in shared programs: 11811851 -> 11780605 (-0.26%)
> instructions in affected programs: 1155007 -> 1123761 (-2.71%)
> helped: 12304
> HURT: 95
> helped stats (abs) min: 1 max: 18 x̄: 2.55 x̃: 2
> helped stats (rel) min: 0.21% max: 20.00% x̄: 3.69% x̃: 2.86%
> HURT stats (abs)   min: 1 max: 6 x̄: 1.77 x̃: 1
> HURT stats (rel)   min: 0.09% max: 5.56% x̄: 1.25% x̃: 1.19%
> 95% mean confidence interval for instructions value: -2.56 -2.48
> 95% mean confidence interval for instructions %-change: -3.71% -3.59%
> Instructions are helped.
>
> total cycles in shared programs: 257618409 -> 257316805 (-0.12%)
> cycles in affected programs: 71999580 -> 71697976 (-0.42%)
> helped: 9155
> HURT: 2380
> helped stats (abs) min: 2 max: 16014 x̄: 38.44 x̃: 16
> helped stats (rel) min: <.01% max: 35.75% x̄: 6.39% x̃: 4.62%
> HURT stats (abs)   min: 2 max: 290 x̄: 21.14 x̃: 4
> HURT stats (rel)   min: <.01% max: 41.55% x̄: 3.14% x̃: 1.33%
> 95% mean confidence interval for cycles value: -34.32 -17.97
> 95% mean confidence interval for cycles %-change: -4.55% -4.29%
> Cycles are helped.
>
> GM45 and Iron Lake had nearly identical results (Iron Lake shown)
> total instructions in shared programs: 7886750 -> 7879944 (-0.09%)
> instructions in affected programs: 373781 -> 366975 (-1.82%)
> helped: 3715
> HURT: 47
> helped stats (abs) min: 1 max: 8 x̄: 1.86 x̃: 1
> helped stats (rel) min: 0.22% max: 16.67% x̄: 2.88% x̃: 2.06%
> HURT stats (abs)   min: 1 max: 6 x̄: 2.55 x̃: 2
> HURT stats (rel)   min: 1.09% max: 5.00% x̄: 1.93% x̃: 2.35%
> 95% mean confidence interval for instructions value: -1.85 -1.77
> 95% mean confidence interval for instructions %-change: -2.91% -2.73%
> Instructions are helped.
>
> total cycles in shared programs: 178114636 -> 178095452 (-0.01%)
> cycles in affected programs: 7227666 -> 7208482 (-0.27%)
> helped: 3349
> HURT: 301
> helped stats (abs) min: 2 max: 90 x̄: 6.55 x̃: 4
> helped stats (rel) min: <.01% max: 14.18% x̄: 0.95% x̃: 0.63%
> HURT stats (abs)   min: 2 max: 42 x̄: 9.13 x̃: 10
> HURT stats (rel)   min: 0.01% max: 11.19% x̄: 1.22% x̃: 1.50%
> 95% mean confidence interval for cycles value: -5.52 -4.99
> 95% mean confidence interval for cycles %-change: -0.81% -0.73%
> Cycles are helped.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  src/compiler/nir/nir_opt_algebraic.py | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
> index 26ddf10..3366a43 100644
> --- a/src/compiler/nir/nir_opt_algebraic.py
> +++ b/src/compiler/nir/nir_opt_algebraic.py
> @@ -125,6 +125,14 @@ optimizations = [
>     (('ffma', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma'),
>     (('~fadd', ('fmul', a, b), c), ('ffma', a, b, c), 'options->fuse_ffma'),
>  
> +   (('fdot4', ('vec4', a, b,   c,   1.0), d), ('fdph',  ('vec3', a, b, c), d)),
> +   (('fdot4', ('vec4', a, b,   c,   0.0), d), ('fdot3', ('vec3', a, b, c), d)),
> +   (('fdot4', ('vec4', a, b,   0.0, 0.0), c), ('fdot2', ('vec2', a, b), c)),
> +   (('fdot4', ('vec4', a, 0.0, 0.0, 0.0), b), ('fmul', a, b)),
> +
> +   (('fdot3', ('vec3', a, b,   0.0), c), ('fdot2', ('vec2', a, b), c)),
> +   (('fdot3', ('vec3', a, 0.0, 0.0), b), ('fmul', a, b)),
> +
>     # (a * #b + #c) << #d
>     # ((a * #b) << #d) + (#c << #d)
>     # (a * (#b << #d)) + (#c << #d)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/9cdde658/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/9cdde658/attachment-0001.sig>


More information about the mesa-dev mailing list