mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Don't check for early stop when StopOnPonderhit is set
If we are pondering we will stop the search only when GUI sends "ponderhit" or "stop" commands or when we reach maximum depth. In all the other cases we continue to search so there is no need to verify for available time. Also better clarify why wait_for_stop_or_ponderhit() before to exit in some cases. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
c56a7ee803
commit
3fc08f8ab6
1 changed files with 7 additions and 6 deletions
|
@ -162,7 +162,7 @@ namespace {
|
|||
int MultiPV, UCIMultiPV, MultiPVIdx;
|
||||
|
||||
// Time management variables
|
||||
bool StopOnPonderhit, FirstRootMove, StopRequest, QuitRequest, AspirationFailLow;
|
||||
volatile bool StopOnPonderhit, FirstRootMove, StopRequest, QuitRequest, AspirationFailLow;
|
||||
TimeManager TimeMgr;
|
||||
SearchLimits Limits;
|
||||
|
||||
|
@ -465,9 +465,10 @@ bool think(Position& pos, const SearchLimits& limits, Move searchMoves[]) {
|
|||
pos.undo_move(bestMove); // Return from think() with unchanged position
|
||||
}
|
||||
|
||||
// If we are pondering or in infinite search, we shouldn't print the best move
|
||||
// When we reach max depth we arrive here even without a StopRequest, but if
|
||||
// we are pondering or in infinite search, we shouldn't print the best move
|
||||
// before we are told to do so.
|
||||
if (Limits.ponder || Limits.infinite)
|
||||
if (!StopRequest && (Limits.ponder || Limits.infinite))
|
||||
wait_for_stop_or_ponderhit();
|
||||
|
||||
// Could be MOVE_NONE when searching on a stalemate position
|
||||
|
@ -648,8 +649,8 @@ namespace {
|
|||
if (depth > 2 && bestMoveChanges[depth])
|
||||
bestMoveNeverChanged = false;
|
||||
|
||||
// Check for some early stop condition
|
||||
if (!StopRequest && Limits.useTimeManagement())
|
||||
// Do we have time for the next iteration? Can we stop searching now?
|
||||
if (!StopRequest && !StopOnPonderhit && Limits.useTimeManagement())
|
||||
{
|
||||
// Take in account some extra time if the best move has changed
|
||||
if (depth > 4 && depth < 50)
|
||||
|
@ -678,7 +679,7 @@ namespace {
|
|||
}
|
||||
|
||||
// If we are allowed to ponder do not stop the search now but keep pondering
|
||||
if (StopRequest && Limits.ponder)
|
||||
if (StopRequest && Limits.ponder) // FIXME Limits.ponder is racy
|
||||
{
|
||||
StopRequest = false;
|
||||
StopOnPonderhit = true;
|
||||
|
|
Loading…
Add table
Reference in a new issue