[Mesa-dev] A few NIR compile time optimisations
Timothy Arceri
tarceri at itsqueeze.com
Wed Feb 20 22:42:57 UTC 2019
On 21/2/19 2:32 am, Marek Olšák wrote:
> On Wed, Feb 20, 2019 at 2:31 AM Connor Abbott <cwabbott0 at gmail.com
> <mailto:cwabbott0 at gmail.com>> wrote:
>
>
>
> On Wed, Feb 20, 2019 at 4:29 AM Marek Olšák <maraeo at gmail.com
> <mailto:maraeo at gmail.com>> wrote:
>
> On Tue, Feb 19, 2019 at 7:57 PM Rob Clark <robdclark at gmail.com
> <mailto:robdclark at gmail.com>> wrote:
>
> On Tue, Feb 19, 2019 at 6:49 PM Marek Olšák
> <maraeo at gmail.com <mailto:maraeo at gmail.com>> wrote:
> >
> > st_link_shader takes 55% of CPU time with NIR, and 9%
> with TGSI.
> >
> > nir_validate_shader 49%
> >
> > nir_validate_shader is overused. It doesn't make sense
> even in debug builds.
>
> tbh, I like nir_validate enabled when I do piglit/deqp
> runs.. and I
> already do separate release vs debug builds (which meson kinda
> encourages by disallowing in-tree builds in the first place,
> but is
> totally possible with autotools builds).. I kinda think
> benchmarking
> debug build in the first place is a flawed process.
>
> So I wouldn't profile/benchmark nir vs tgsi (or really
> anything) with
> debug builds.. I could get behind a separate compiler-debug
> option
> that changed the default NIR_VALIDATE setting and maybe some
> other nir
> debug features to get some features of debug builds without
> enabling
> the heavier nir debug features. But other than making debug
> options a
> bit more fine grained, I wouldn't change things in response to a
> flawed benchmarking process..
>
>
> That's a harsh reaction to a relatively good benchmarking setup.
> I use debugoptimized with -DDEBUG. My performance is probably
> more affected by -fno-omit-frame-pointer than -DDEBUG.
>
>
> Why would you enable DEBUG in a profiling build? AFAIK it's supposed
> to enable validation more expensive than simple asserts, which you
> probably don't want in a benchmarking setup, although from grepping
> the source it's not used much. It might be a good idea to move
> running NIR validation behind DEBUG instead of !NDEBUG. In the
> meantime, unless you really want to benchmark things with assertions
> enabled in which case NIR_VALIDATE=0 works (but why would you?), you
> can set -Db_ndebug=false in Meson. I just saw today that they're
> enabled by default in debugoptimized builds (whoops, better go fix
> that and re-profile...).
>
>
> Assertions and other debug code really don't cost much, so I don't see a
> reason to undef DEBUG.
Besides what Eero already mentioned I'm not sure that is always a safe
assumption. This series itself moved some expensive checks (a bunch of
recursive loops) into an assert, and there are other examples of this
elsewhere in the compiler.
>
> Marek
More information about the mesa-dev
mailing list