[Mesa-dev] [PATCH 0/3] Hash-table and hash-set, V4
Timothy Arceri
t_arceri at yahoo.com.au
Fri Apr 17 01:35:59 PDT 2015
On Thu, 2015-04-16 at 12:16 -0700, Eric Anholt wrote:
> Eric Anholt <eric at anholt.net> writes:
>
> > Jason Ekstrand <jason at jlekstrand.net> writes:
> >
> >> On Sat, Apr 11, 2015 at 4:25 PM, Thomas Helland
> >> <thomashelland90 at gmail.com> wrote:
> >>> The performance numbers (shader-db runtime) are:
> >>>
> >>> Difference at 95.0% confidence
> >>> -14.7608 +/- 3.36786
> >>> -9.05064% +/- 2.06501%
> >>> (Original runtime was 160 seconds)
> >>
> >> Good Work!
> >>
> >> I had one comment on the hash set patch. With that fixed, the series is
> >>
> >> Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>
> >>
> >> Probably want to give Eric a a couple of days to look at it too.
> >
> > Yeah, I'm splitting the series up into each individual change (resizing
> > cutoff, linear probing, power-of-two, then quadratic probing) so that we
> > can make sure that they're all good for both the compiler and GL object
> > lookup.
>
> OK, I've got a split out series on hash-quadratic of my tree. Here's be
> bad news from the last commit:
>
> However, over the course of this series, INTEL_NO_HW=1 minecraft is still
> down by -0.615582% +/- 0.514508% (n=55). If we drop 2 low outliers each
> from before/after of that dataset, the image is more clear: -0.538901% +/-
> 0.381768% (n=53).
>
> It looks like the collision reprobe changes are hurting too much. The
> fact that collision is that big of a deal is bad -- I thought we should
> be having basically no collision in Mesa's GL hash tables,
Hi guys,
This is consistent with what I reported back in November "most time is
spent doing the hash and resolving collisions" [1], in the game
benchmarks I profiled most time was spent doing the hash and resolving
collisions. The harder thing to determine at the time was if this was
actually a bottle neck or not.
I also found that there was a large difference between what oprofile and
callgrind reported, oprofile seemed to give large varying results when
it came to the hash table.
Anyway as I've stated before I was able to observe a nice boost using a
simple implementation of the crc32 intrinsic for hashing. I also read
somewhere that crc32 could be better for avoiding collisions but I
didn't notice any difference in my testing they were both equally bad.
I never submitted my patch as I couldn't measure any frame rate
difference caused by the change however I'm happy to recreate it if Eric
would like to test it out, it seems Minecraft is a good test.
Not useful for the current Raspberry Pi but ARMv8 also has a crc
intrinsic maybe useful Raspberry Pi 3? Or for the other ARM devices
using Mesa.
>From what I saw previously I agree that Robin Hood hashing looks like a
good fit for the mesa hash table, the resource I pointed to previously
has a good deal of information on it [2].
[1]
http://lists.freedesktop.org/archives/mesa-dev/2014-November/071512.html
[2] http://codecapsule.com/2013/11/11/robin-hood-hashing/
More information about the mesa-dev
mailing list