Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: CilkChess question for Don

Author: Don Dailey

Date: 20:23:39 02/03/99

Go up one level in this thread


On February 01, 1999 at 10:17:40, Robert Hyatt wrote:

>On February 01, 1999 at 00:51:40, Don Dailey wrote:
>
>>>>Testing the move is like adding 2 or 3 bits (I'm guessing, but it's
>>>>some small number of bits) to the hash key.  It's a really good way
>>>>to measure false matches in the hash table. If you can spare about 3
>>>>bits or so, you can pick up the majority of conflicts in the hash table.
>>>>With 3 bits, you will identify a false match almost 90% of the time.
>>>>It's a neat trick and testing the move is pretty much the same
>>>>idea, except you get the bits for free since you store the move
>>>>anyway.   But it turns out that I don't test the move,  I generate
>>>>all the moves and push this one to the front if I run across it,
>>>>similar to how one might do the killers.   I could trivially do
>>>>your test though and probably should.  Technically, I should probably
>>>>try the hash move before doing any work but I never found this to be
>>>>worth anything for me.  Is this what you do?   I think it's because
>>>>there is rarely a hash move near enough to the end nodes to do you
>>>>much good.
>>>>
>>>
>>>
>>>I _must_ validate the move... because I search this move before generating
>>>moves.  And if it isn't valid, my program 'blows up'.  Because making a bad
>>>move will corrupt the board, and I make/unmake which means I might _really_
>>>corrupt it on the unmake (ie if I try O-O where it isn't legal, the board is
>>>_gone_ because the MakeMove() gives me a new king and rook, and the UnMake
>>>won't fix it...
>>
>>My program will also crash and burn if an illegal move is attempted.
>>But I will never make an illegal move, even if it is in the hash
>>table.  Essentially, the validation process is to sort it to the
>>top IF it is already in the list.   Since you try the move first
>>of course you have to validate it.   But do you find that this
>>speeds things up in a measurable way?   I don't do this because
>>I never noticed a speedup.
>
>if you don't get a speedup, your 'hash-move' stuff sounds like it isn't
>working.  Because shouldn't that move cause an instant fail-high in a
>reasonable percentage of the cases?  And in those cases, I do _no_ move
>generation at all, and save that time.
>
>I haven't tried measuring this in Crafty, but in Cray Blitz, we didn't
>generate any moves in about 1/3 of the positions we searched, normally,
>although in endgames this went _way_ up...

My hash-move stuff works fine.  I have done a lot of tests on this and
about half of the benefit in the middle game is due to keeping the
best move and trying it first.   I am astounded that you only have to
generate moves 2/3 of the time.   This means you are getting a hit
a lot more than 2/3 of the time.   I will do some measurements and
see what percentage of the time I actually get a cutoff from a hash
move.

- 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.