From 0049d3f337b6f3a66a06503c808d6d8b03b68505 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sun, 8 Apr 2012 08:16:37 +0100 Subject: [PATCH] Reduce stack usage Shrink dimensions of the biggest stack consumers arrays. In particular movesSearched[] can be safely shrinked without any impact on strenght or risk of crashing. Also MAX_PLY can be reverted to 100 with almost no impact so to limit search recursion and hence stack allocation. A different case is for MAX_MOVES (used by Movepicker's moves[]), because we know that do exsist some artificial position with about 220 legal moves, so in those cases SF will crash. Anyhow these cases are never found in games. An open risk remains perft, especially run above handcrafted positions. This patch originates from a report by Daylen that found SF crashing on his Mac OS X 10.7.3 while in deep analysys on the following position: 8/3Q1pk1/5p2/4r3/5K2/8/8/8 w - - 0 1 No functional change. Signed-off-by: Marco Costalba --- src/search.cpp | 4 ++-- src/types.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 920310da..7349e96b 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -531,7 +531,7 @@ namespace { assert((alpha == beta - 1) || PvNode); assert(depth > DEPTH_ZERO); - Move movesSearched[MAX_MOVES]; + Move movesSearched[64]; StateInfo st; const TTEntry *tte; Key posKey; @@ -944,7 +944,7 @@ split_point_start: // At split points actual search starts from here } ss->currentMove = move; - if (!SpNode && !captureOrPromotion) + if (!SpNode && !captureOrPromotion && playedMoveCount < 64) movesSearched[playedMoveCount++] = move; // Step 14. Make the move diff --git a/src/types.h b/src/types.h index 031cb0ba..ba25ef6e 100644 --- a/src/types.h +++ b/src/types.h @@ -79,8 +79,8 @@ const bool Is64Bit = false; typedef uint64_t Key; typedef uint64_t Bitboard; -const int MAX_MOVES = 256; -const int MAX_PLY = 256; +const int MAX_MOVES = 192; +const int MAX_PLY = 100; const int MAX_PLY_PLUS_2 = MAX_PLY + 2; const Bitboard FileABB = 0x0101010101010101ULL; -- 2.39.2