One issue that has always been pulling my hair is how to configure different chess engines so that they compete with each other with maximum efficiency according to the speed of the processor that our machine has, it does not seem that the configuration they bring by default is recognized by the hardware we have since I observe many differences in ranges, especially in the 'hash'. I'm a Linux user but not an expert.

so i went to google ...

The following information is extracted from an article, the author says the following:

HT [KB] = 2.0 * PFreq [MHz] * t [s]

"Basically what this formula tells us is that to know the size of the hash we must multiply the speed of our processor by 2 and multiply it by the time in seconds that we have configured for each play. For example, if we are going to play a 10-minute game against the module for 40 movements (15 sec) and our processor is 3,000 Mhz, the result will be: (3,000 * 2) * 15 = 90000, which divided by 100 gives us 900 times what we will choose in the drop-down the hash size closest to this value: 1024 in our case."

But when I look at the configuration of the installed motors i got, I see that there are very large variations between one and the other, engines, and I wonder if that is a general rule for all cases, if so, then they should all have the same size, right?.

This is Greek to me, since every engine is coming with a particular configuration, if i apply this rule to all the engines what would be the difference?.

My machine data:

:~$ lscpu | grep name

Model name: Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz :~$ lscpu | grep MHz CPU MHz: 3727.453 CPU max MHz: 3900.0000 CPU min MHz: 400.0000 :~

I think some images can explain much better what i means by 'vaiations in the zise' of the memory/hash.

enter image description here



Any clarifying information is appreciated. Thanks!

1 Answer 1


You know the mantra of optimization? You have to benchmark, at the end there is no other way. Stockfish developers faces such questions. And since ShashChess is a stockfish derivate, it has the "bench" command line flag. This is meant as a developer aid, so you have to dig into the source code, to use it properly, see https://github.com/amchess/ShashChess/blob/master/src/All/benchmark.cpp#L104. For example if you want to test 64 MB of hash with 6 threads to depth 21, you would use:

./shashchess 64 6 21

If you want best performance, enable "huge pages" on your linux box first, this should mitigate or likely eradicate the counter intuitive cap on hash size.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.