Thursday, November 17, 2016

[ntwzztae] Stockfish arbitrary hash size

By default, the Stockfish chess engine can only have the memory use for its transposition table be a power of two number of bytes.  This is inconvenient because most computers come with exactly a power of two amount of memory (and for Macs, this cannot be upgraded).  One cannot give the entire memory to the engine, leaving none for the operating system, but leaving almost half of it unused is also undesirable.

However, by modifying the source code, and possibly sacrificing performance, one can fine tune the memory use to any size.  Adjust ClusterSize in tt.h, possibly remove the padding, and possibly also disable the static assertions that it fit in a cache line.

ClusterSize is the maximum depth of the linear separate chaining, in hash table terminology, so avoid making it too large.

No comments :