Author: Ren Wu
Date: 18:01:16 11/20/01
Go up one level in this thread
On November 20, 2001 at 20:46:07, Scott Gasch wrote: > >As Bruce pointed during CCT3, move tables can be used for other things than just >moves. For example, if you use PSQT at all, it might be useful to have the >delta PSQT for [KING][A8][A7] handy in MakeMove. Likewise the delta hash key >value. > >The former saves work in eval if your tree is not very very long. That is, >assume you have 16 pieces average on the board at each leaf node in the tree. >Then you have a total of leaf_node_count * 16 PSQT lookups. If you do it >incrementally at MakeMove you have edge_count * 1 PSQT lookups. > >The latter saves you one 64 bit xor operation per move. That is, instead of >doing: > > pos->i64Sig ^= i64Key[KING][A8]; // lift the king > pos->pSquare[A8] = EMPTY; > pos->i64Sig ^= i64Key[KING][A7]; // place the king > pos->pSquare[A7] = KING; > >you can do: > > pos->i64Sig ^= g_sMoveGen[KING][A8][A7].i64HashDelta; > pos->pSquare[A8] = EMPTY; Thanks for this info. I know bruce using this approach, and i know he had extended it somehow, but I don't know any of the details, until today. But still, the price is pretty high. The orignal one only need one byte per entry. If we want to keep hash/psqt inside this table, we have to make it 8-10 times bigger, this will have bad impact on cache etc. So i am not sure if this is the right way to do in current hardware. Ren.
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.