Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Should I Hash at the Leaves?

Author: Don Dailey

Date: 09:35:42 02/25/99

Go up one level in this thread


On February 25, 1999 at 05:48:06, Larry Griffiths wrote:

>On February 25, 1999 at 05:10:19, Ulrich Tuerke wrote:
>
>>
>>On February 25, 1999 at 00:35:29, Don Dailey wrote:
>>
>>>On February 24, 1999 at 17:53:05, Larry Griffiths wrote:
>>>
>>>>
>>>>I have read a few chess papers about hashing.  The ones that I have read
>>>>recommend not hashing at the leaves of the tree, but I seem to get better
>>>>performance doing it this way. (At least in the opening and middlegame).
>>>>Am I missing something or is this recommendation from the stone ages?
>>>>
>>>>Larry   ~(:->
>>>
>>>Do what works best.  I hash 4 ply into the quies search but no farther.
>>>Why?  Because I ran a lot of timing tests and this was optimum.
>>
>>Hashing in quiescence seems a little bit tricky to me. Imagine that you are
>>generating captures only but you get a non-capture move from the hash table
>>probe.
>>How do you handle this case, ignore this hit or make this move ?
>>
>>Uli

Uli,

This should rarely if ever happen because presumably you will only
read and write quies positions from quies positions.  But there
are move sequences that can generate this situation, especially so
with certain kinds of move extensions but not limited to them.

But it doesn't really matter.  You get two things out of the hash
table,  a score or bound improvement, and a suggested move.  The
key word here is "suggested."   If it turns out that you can use
the score, there is no issue, just use the score.  If it turns
out that you cannot use the suggested move at the next node, then
it's probably because that position was seen at a deeper level
elsewhere in the tree.  That's ok, not a problem.

If you are worried about using the suggested move to verify that
you do not have a collision, don't be.   This check is no different
than adding 1 or 2 bits to the key and it doesn't guarantee anything
anyway.   There is nothing wrong with checking it if you can,  but
don't lose any sleep over it and don't throw away a small speedup
over this.

- Don



>>>Your mileage may vary!
>>>
>>>- Don
>
>
>Thanks Don and Uli,
>
>I actually only hash that last plys of the primary search.  I still generate
>all moves so the hashing is cutting out a lot of those moves.  I know that
>some folks have code that only generate capture move's or quick gen code
>that validates the killer move and only generate the rest of the moves
>if the killer does not cause a cut-off.
>
>As to the question of quiesence hashing,  I do not see how this particular
>case of a capture would cause a problem for me since I use a bitboard in
>my hash table to detect collisions and the positions would not match.
>
>My mileage may vary.  How true Don.  I realize that no two chess programs
>are the same and what may work for one may not produce the same results
>for another.  I would not want to stop someone from trying what I have
>already tried, just because they thought It was a dead-end.  I believe in
>confirming the results that have been reported by others.
>
>Larry   :-)

There is not an issue here to confirm or disprove.  I don't hash at end
nodes because it slows my program down.  I DO hash 4 ply into quies.
I gain very little from doing this, so I wouldn't lose any sleep over
this.  There is a good chance I will have to adjust this depending on
the platform I run on.   On a big distributed memory machine I may
not even hash on the last ply of the main search for instance. I don't
really know,  you should do what works.  To illustrate Deep Blue did not
hash at all in their hardware search, which is approximately 4 ply of
main search!  Not because they cannot, but because they took the best
tradeoff for them and their situation.  They have the possibility of
hashing locally on chip but they had this turned off during the last
match.

I understand that Bob probably would gain nothing whatsoever
from doing this since his quies is designed to get out fast.  My program
uses MTD(f) and it may well be that I would get different results
with the less aggressive aspiration searches most programs use.

- Don



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.