From ad430ff2aaf63186f0989bbca1d421f70cb51186 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Thu, 1 Aug 2019 23:32:14 +0200 Subject: [PATCH] Improvements for tablebase code - Speed up loading of tablebases. - Disable loading for large-board version. - Prevent invalid usage for variants. --- src/position.cpp | 1 + src/search.cpp | 1 + src/syzygy/tbprobe.cpp | 13 +++++++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index 37bbfc8..1111530 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -113,6 +113,7 @@ std::ostream& operator<<(std::ostream& os, const Position& pos) { os << UCI::square(pos, pop_lsb(&b)) << " "; if ( int(Tablebases::MaxCardinality) >= popcount(pos.pieces()) + && Options["UCI_Variant"] == "chess" && !pos.can_castle(ANY_CASTLING)) { StateInfo st; diff --git a/src/search.cpp b/src/search.cpp index 4a98a4a..c269024 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -706,6 +706,7 @@ namespace { if ( piecesCount <= TB::Cardinality && (piecesCount < TB::Cardinality || depth >= TB::ProbeDepth) && pos.rule50_count() == 0 + && Options["UCI_Variant"] == "chess" && !pos.can_castle(ANY_CASTLING)) { TB::ProbeState err; diff --git a/src/syzygy/tbprobe.cpp b/src/syzygy/tbprobe.cpp index f877276..a39b17d 100644 --- a/src/syzygy/tbprobe.cpp +++ b/src/syzygy/tbprobe.cpp @@ -1260,6 +1260,11 @@ void Tablebases::init(const std::string& paths) { MaxCardinality = 0; TBFile::Paths = paths; +#ifdef LARGEBOARDS + // Tablebases are not working for large-board version + return; +#endif + if (paths.empty() || paths == "") return; @@ -1358,14 +1363,14 @@ void Tablebases::init(const std::string& paths) { } // Add entries in TB tables if the corresponding ".rtbw" file exsists - for (PieceType p1 = PAWN; p1 < KING; ++p1) { + for (PieceType p1 = PAWN; p1 <= QUEEN; ++p1) { TBTables.add({KING, p1, KING}); for (PieceType p2 = PAWN; p2 <= p1; ++p2) { TBTables.add({KING, p1, p2, KING}); TBTables.add({KING, p1, KING, p2}); - for (PieceType p3 = PAWN; p3 < KING; ++p3) + for (PieceType p3 = PAWN; p3 <= QUEEN; ++p3) TBTables.add({KING, p1, p2, KING, p3}); for (PieceType p3 = PAWN; p3 <= p2; ++p3) { @@ -1377,11 +1382,11 @@ void Tablebases::init(const std::string& paths) { for (PieceType p5 = PAWN; p5 <= p4; ++p5) TBTables.add({KING, p1, p2, p3, p4, p5, KING}); - for (PieceType p5 = PAWN; p5 < KING; ++p5) + for (PieceType p5 = PAWN; p5 <= QUEEN; ++p5) TBTables.add({KING, p1, p2, p3, p4, KING, p5}); } - for (PieceType p4 = PAWN; p4 < KING; ++p4) { + for (PieceType p4 = PAWN; p4 <= QUEEN; ++p4) { TBTables.add({KING, p1, p2, p3, KING, p4}); for (PieceType p5 = PAWN; p5 <= p4; ++p5) -- 1.7.0.4