Syzygy tablebases

Adds support for Syzygy tablebases to Stockfish.  See
the Readme for information on using the tablebases.

Tablebase support can be enabled/disabled at the Makefile
level as well, by setting syzygy=yes or syzygy=no.

Big/little endian are both supported.

No functional change (if Tablebases are not used).

Resolves #6
This commit is contained in:
Ronald de Man
2014-11-26 07:45:28 +08:00
committed by Gary Linscott
parent 4509eb1342
commit 7caa6cd338
12 changed files with 2837 additions and 6 deletions

View File

@@ -27,6 +27,10 @@
#include "tt.h"
#include "uci.h"
#ifdef SYZYGY
#include "syzygy/tbprobe.h"
#endif
using std::string;
UCI::OptionsMap Options; // Global object
@@ -38,6 +42,9 @@ void on_logger(const Option& o) { start_logger(o); }
void on_threads(const Option&) { Threads.read_uci_options(); }
void on_hash_size(const Option& o) { TT.resize(o); }
void on_clear_hash(const Option&) { TT.clear(); }
#ifdef SYZYGY
void on_tb_path(const Option& o) { Tablebases::init(o); }
#endif
/// Our case insensitive less() function as required by UCI protocol
@@ -65,6 +72,12 @@ void init(OptionsMap& o) {
o["Minimum Thinking Time"] << Option(20, 0, 5000);
o["Slow Mover"] << Option(80, 10, 1000);
o["UCI_Chess960"] << Option(false);
#ifdef SYZYGY
o["SyzygyPath"] << Option("<empty>", on_tb_path);
o["SyzygyProbeDepth"] << Option(1, 1, 100);
o["Syzygy50MoveRule"] << Option(true);
o["SyzygyProbeLimit"] << Option(6, 0, 6);
#endif
}