Page 1 of 1

Der Bringer's hash settings : what is best ?

PostPosted: 17 Nov 2006, 18:33
by Yannik Snoeckx
Hello !

Now that I have all the versions of the Bringer that I need for my dinosaur league I am wondering how I should set the different hash tables. The manual quoted below is not that helpful.

Code: Select all
Hashtable settings are available in the Options menu, Settings window. Hash tables are areas of RAM Der Bringer sets aside to store analyzed positions and other calculations it makes as it analyzes. As the same position may be reached with more than one line, when Der Bringer finds a previously analyzed position in a hash table, it does not recalculate that position, which saves quite a bit of time.

You can specify the size of the hash tables. The default values are shown in the figure below ...


There are 3 hashes types : position, evaluation and pawns and the default values proposed are very low figures of 1000k (po), 1000k (ev) and 500k (pa).

Normally I would like to allow 64mb for main hashes and 8mb for pawns, with eventually 2 more for a third type of hashes. How should I do it here ? 32 / 32 / 8 ? or 64 / 5 / 5 ? sonethîng else ?

To complicate things a little, since the 1.8 version, hashes are stored, so maybe that I should make things differently for Bringer 1.5-7 and Bringer 1.9.

Thanks in advance if you can explain and/or make suggestions.

Best wishes.
Y. Snoeckx

Re: Der Bringer's hash settings : what is best ?

PostPosted: 18 Nov 2006, 09:04
by Gábor Szots
Yannik Snoeckx wrote:Hello !

Now that I have all the versions of the Bringer that I need for my dinosaur league I am wondering how I should set the different hash tables. The manual quoted below is not that helpful.

Code: Select all
Hashtable settings are available in the Options menu, Settings window. Hash tables are areas of RAM Der Bringer sets aside to store analyzed positions and other calculations it makes as it analyzes. As the same position may be reached with more than one line, when Der Bringer finds a previously analyzed position in a hash table, it does not recalculate that position, which saves quite a bit of time.

You can specify the size of the hash tables. The default values are shown in the figure below ...


There are 3 hashes types : position, evaluation and pawns and the default values proposed are very low figures of 1000k (po), 1000k (ev) and 500k (pa).

Normally I would like to allow 64mb for main hashes and 8mb for pawns, with eventually 2 more for a third type of hashes. How should I do it here ? 32 / 32 / 8 ? or 64 / 5 / 5 ? sonethîng else ?

To complicate things a little, since the 1.8 version, hashes are stored, so maybe that I should make things differently for Bringer 1.5-7 and Bringer 1.9.

Thanks in advance if you can explain and/or make suggestions.

Best wishes.
Y. Snoeckx


Hi Yannik,

Some years ago I asked Gerrit this question. If memory serves me well, he told me to set the ratio of the three different hashes to 5:1:1.
However, you can check for yourdelf, if hash table usage is efficient enough. Bringer displays the per cent of hash table hits for each of the three. If you double the size of a hash table and find that the hit per cent does not change considerably, doubling the size was not worth it. This way, you can determine the best settings iteratively.

Regards,

Re: Der Bringer's hash settings : what is best ?

PostPosted: 19 Nov 2006, 19:18
by Yannik Snoeckx
Hi Gábor.

Many thanks for your answer.

I will do some testing, starting with your 5-1-1 ratio.

Do you remember what version of Bringer this information was about ?

Best wishes.
Y. Snoeckx

Re: Der Bringer's hash settings : what is best ?

PostPosted: 19 Nov 2006, 20:00
by Gábor Szots
Yannik Snoeckx wrote:Hi Gábor.

Many thanks for your answer.

I will do some testing, starting with your 5-1-1 ratio.

Do you remember what version of Bringer this information was about ?

Best wishes.
Y. Snoeckx


I am not sure at what time did I ask this from Gerrit, but I don't think hash table usage changed much during the development of the engine. I think it is suitable for all versions which have this 3-part hash table (and there is no version I know of which does otherwise).

Best wishes,

Re: Der Bringer's hash settings : what is best ?

PostPosted: 22 Nov 2006, 09:40
by Yannik Snoeckx
Hi Gábor,

If I was asking about the versions it's because hash is stored since version 1.8, but I guess it shouldn't change the ratio.

I've tried 48/8/8 with Bringer 1.9 and after 15 moves I get the following numbers, do they look correct ?
Pos 99/34; Eval 99/34; Hash 92/89

And for Bringer 1.5, its :
Pos 3/5; Eval 79/26; Hash 75/94

For both examples the engine had about 8 seconds for move on a 2.5ghz Pentium

Thanks in advance for the answer.

Best wishes.
Y. Snoeckx

Re: Der Bringer's hash settings : what is best ?

PostPosted: 22 Nov 2006, 12:49
by Gábor Szots
Yannik Snoeckx wrote:Hi Gábor,

If I was asking about the versions it's because hash is stored since version 1.8, but I guess it shouldn't change the ratio.

I've tried 48/8/8 with Bringer 1.9 and after 15 moves I get the following numbers, do they look correct ?
Pos 99/34; Eval 99/34; Hash 92/89

And for Bringer 1.5, its :
Pos 3/5; Eval 79/26; Hash 75/94

For both examples the engine had about 8 seconds for move on a 2.5ghz Pentium

Thanks in advance for the answer.

Best wishes.
Y. Snoeckx


In fact Gerrit also wrote me the percentage numbers to expect from each hash table but, unfortunately, I lost that message. However, I do remember that the pos and eval hash per cents were below 40, while the pawn percent was around 85. This indicates that the hash sizes you use for version 1.9 are nearly perfect.
Don't worry, you can't make big mistakes in this area. :-)

Regards,

Re: Der Bringer's hash settings : what is best ?

PostPosted: 02 Dec 2006, 11:14
by Yannik Snoeckx
Hi Gábor,

Many thanks for your answer. I hope you are right when you say it is impossible to make big mistakes in this area. :wink:

By the way the (now avaible again) winboard FAQ apparently mentions your post and confirms what you said. :D

Regards.
Y. Snoeckx