Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Hash Tables for Chessbase programs

Author: Jesper Antonsson

Date: 07:38:04 12/25/01

Go up one level in this thread


Generally, you want to use as much memory as possible without making the
computer page memory to disk. This is because even if the table doesn't get
especially full, it's likely that some entries (information) will be overwritten
(see "the birthday paradox"). As memory doesn't come for free, you got to have a
limit, though. Perhaps keeping the table from getting more than half full is a
good rule of thumb, so lets do a small calculation to see in what ballpark that
puts us:

Lets say a program uses 64 bit (8 bytes) entries in the hash table, and that
it's speed is N nodes per second. Furthermore, we have a setting that makes it
think on average T seconds per move. Then you would need somewhere around
8*N*T*2 bytes to keep the table from getting more than half full. If N is 500
KNps and T is 180 s, you'd like 8*500000*180*2 = 1,34 gigabytes. Note that this
is on the conservative side, as collisions will occur, and the nps includes
nodes already in hash and so forth, we may perhaps make do with half that or
less. But generally, allocate as much memory you are willing to spare for
hashing.

Of course, you can experiment with your program: Give it 32 Mbyte and let it
think to a certain depth on a selection of positions. Increase memory by a
factor of two until you run out of it or the time taken doesn't change much.
Then you'll get a better estimate than these theoretical guesses can provide.
:-)

On December 25, 2001 at 09:39:53, Brian Katz wrote:

>What is the proper method for setting Hash Tables in Chessbase programs.
>I have read that for Fritz 5 the proper Hash Table setting is as follows:
>
>2 x (your processor speed) x (avg. seconds per move)
>of course in Fritz 5 you could set the exact number such as (16,384)bytes
>Of course, the available RAM you have is limits the your proper maximum setting,
>as severe hard drive activity will take place if your computer does not have
>enough RAM if your Hash Table setting is too high.
>Since Fritz 6 and Fritz 7 is set in MB you would just divide this formula by
>1000.
>I have also been told, based on an actual game of approx. 50 moves, that you
>should subtract the first 10 or 15 moves, since the opening moves are played
>instantly, and shouldn't be a factor divided into the time control.
>A five minute game (300 seconds) Supposedly you would divide 35-40 moves,instead
>of 50 into 300 seconds and get a figure, multiply that by 2x(processor speed)
>and divide by 1000.
>Of course average time per move settings give you the exact seconds per move.
>
>Is 2x(processor speed)x average seconds per move /1000 still the accepted Hash
>Table setting method?
>Any suggestions would be greatly appreciated.



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.