mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Force time check on TB probe in search.
Because of aggressive time management and optimistic assumptions about move overhead, it's still very easy to get Stockfish to forfeit on time when we hit an endgame and have Syzygy EGTB on a spinning drive. The latency from serving a few thousand EGTB probes (~10ms each), of which there can currently be up to 4000 outstanding before a time check, will easily overwhelm the default Move Overhead of 30ms. This problem was first raised by Gian-Carlo Pascutto and some solutions and improvements were discussed in the following pull requests: https://github.com/official-stockfish/Stockfish/pull/1471 https://github.com/official-stockfish/Stockfish/pull/1623 https://github.com/official-stockfish/Stockfish/pull/1783 This patch is a minimal change proposed by Marco Costalba to lower the impact of the bug. We now force a check of the clock right after each tablebase read. No functional change.
This commit is contained in:
parent
3925750945
commit
4b88bea4fc
1 changed files with 4 additions and 0 deletions
|
@ -683,6 +683,10 @@ namespace {
|
|||
TB::ProbeState err;
|
||||
TB::WDLScore wdl = Tablebases::probe_wdl(pos, &err);
|
||||
|
||||
// Force check of time on the next occasion
|
||||
if (thisThread == Threads.main())
|
||||
static_cast<MainThread*>(thisThread)->callsCnt = 0;
|
||||
|
||||
if (err != TB::ProbeState::FAIL)
|
||||
{
|
||||
thisThread->tbHits.fetch_add(1, std::memory_order_relaxed);
|
||||
|
|
Loading…
Add table
Reference in a new issue