]> git.sesse.net Git - stockfish/commit - src/search.cpp
Improve excluded move logic
authorpb00067 <pb00067@PHXL0356.wp.lan>
Fri, 3 Feb 2023 16:57:19 +0000 (17:57 +0100)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Fri, 3 Feb 2023 19:18:50 +0000 (20:18 +0100)
commit8d3457a9966f8c744ab7f8536be408196ccd8af9
tree2a019b345d58e29ba4b09517f9365a3679076eea
parentd2f79ff0e0efc33797120f59355c2a5571b4ab80
Improve excluded move logic

PR consists of 2 improvements on nodes with excludeMove:

1. Remove xoring the posKey with make_key(excludedMove)

   Since we never call tte->save anymore with excludedMove,
   the unique left purpose of the xoring was to avoid a TT hit.
   Nevertheless on a normal bench run this produced ~25 false positives
   (key collisions)
   To avoid that we now forbid early TT cutoff's with excludeMove
   Maybe these accesses to TT with xored key caused useless misses
   in the CPU caches (L1, L2 ...)
   Now doing the probe with the same key as the enclosing search does,
   should hit the CPU cache.

2. Don't probe Tablebases with excludedMove.

   This can't be tested on fishtest, but it's obvious that
   tablebases don't deliver any information about suboptimal moves.

Side note:
   Very surprisingly it looks like we cannot use static eval's from
   TT since they slightly differ over time due to changing optimism.
   Attempts to use static eval's from TT did loose about 13 ELO.
   This is something about to investigate.

LTC: https://tests.stockfishchess.org/tests/view/63dc0f8de9d4cdfbe672d0c6
LLR: 2.94 (-2.94,2.94) <0.50,2.50>
Total: 44736 W: 12046 L: 11733 D: 20957
Ptnml(0-2): 12, 4212, 13617, 4505, 22

An analogue of this passed STC & LTC
see PR #4374 (thanks Dubslow for reviewing!)

closes https://github.com/official-stockfish/Stockfish/pull/4380

Bench: 4758694
src/search.cpp