Author: Tim Foden
Date: 03:05:28 12/06/03
Go up one level in this thread
On December 05, 2003 at 14:33:26, Dieter Buerssner wrote: >I can maximally store one >score per entry (but want to experiment with two, soon - one upper and one lower >bound). I guess that if you store both an upper and lower bound, you need to also store separate drafts, eh? I'd have trouble making this fit in the hash record for GLC, but not for Mantis (my new program.. doesn't actually play yet :). In GLC the move takes 23 bits, and the score takes 20 bits and the draft takes 12 bits, and I like to have the full 64 bit hash key in the record, and I don't want to go over 16 bytes for the whole record. I have 3 bits to spare... :) I realise that I could store approximate values for the score and the depth, and I could compress the move, but I can't be bothered (I've actually tried move compression though). class CHashTableRec { #pragma pack(push, 1) UINT64 m_hash; // 8 hash key for record UINT32 m_info1; // 4 age, draw flag, score type, move INT32 m_info2; // 4 score, depth #pragma pack(pop) // the info words look like this: // // ------------- m_info2 ------------- ------------- m_info1 ------------- // ssssssss ssssssss ssssdddd dddddddd / aaaatt00 0mmmmmmm mmmmmmmm mmmmmmmm // // key: // s = score, in millipawns, signed // d = depth, in eigths of a ply, unsigned // a = age indicator, 0 -> record not used // t = score type, none, exact, upper or lower // m = move Mantis will only use 14 bits for the move, 15 bits for the score, and 10 bits for the depth. 14+15+10+4+2=45, leaving 19 bits. not quite enough for another depth and score, but if we have 2 bounds, we don't need a the flag bits, so 14+30+20+4 = 68. 4 bits too many. If I drop a couple of bits from the depth, so it's only accurate to 0.5 ply, then all this would fit :) Cheers, Tim.
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.