Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Beowulf hot spots shown pictorially

Author: Dann Corbit

Date: 03:40:59 06/22/02

Go up one level in this thread


On June 22, 2002 at 04:35:04, Sune Fischer wrote:

>On June 21, 2002 at 17:08:43, Dann Corbit wrote:
>
>>On June 21, 2002 at 15:45:11, Dieter Buerssner wrote:
>>
>>>On June 21, 2002 at 15:23:40, Robert Hyatt wrote:
>>>
>>>>why not replace that long long module with
>>>>
>>>>address = (int) (hash_signature) % table_size
>>>
>>>I suggested something similar. I am too lazy to check exactly, but it seems that
>>>the cast to (signed) int will introduce a bug. Preferably would be a cast to
>>>unsigned, or even better to size_t (In my suggestion I used unsigned long, which
>>>will work on compilers with 16bit int and an adress space > 16bit, but those are
>>>outdated. I still have one and use it now and then ...)
>>>
>>>BTW. adress might be a bit misleading, because adress IMHO seems to imply a
>>>pointer, while it actually is a index/offset/whatever you want to call it.
>>
>>I tried this:
>>
>>Changed type of NHash:
>>unsigned        NHash;
>>
>>Changed hash index calculation to this:
>>unsigned       *pHash = (unsigned *) &Hashkey;
>>unsigned        aHash = pHash[0]^pHash[1];
>>hashentry = aHash % NHash;
>>
>>It's a heck of a lot faster and does not seem to introduce any problems.
>
>Could you explain the point of this:
>>unsigned        aHash = pHash[0]^pHash[1];

I wanted to use all the bits of the hash instead of just the lower 32 bits.

>and why is it faster than what Bob suggested:
>hashentry = (unsigned int) hkey % table_size

For sure, it's slower.



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.