phhnguyen wrote: ↑Sat Jul 31, 2021 3:43 pm
We may push the threshold longer to save some engines, but the root of the problem is still there: some engines don't reply to the command ping/isready within a reasonable time.
Yes, fully agree. An idea that may help would be to make the threshold depend on the time control. Of course if you play very short games the current 30 + 40 seconds will not matter, as it will never be reached (and that's ok with me), but when playing LTC games some moves can take 10 minutes or more, and in that case, the engine might be silent for quite a while and 30+40 may be too short. So perhaps use 30+40 with up to a certaint time left to move, and past that value, adjust it as a % of the remaining time?
Anyways, it's as you said, if engines behave well and answer instantly to the isready command, none of this matters at all.
There is another thing though, that I want to ask you. Can you include timestamps (down to the milisecond maybe?) in the engine's log file? Cause I saw this:
Code: Select all
RubiChess 2.2 < uci
Ethereal 13.25 < uci
RubiChess 2.2 > info string Allocation of memory uses large pages.
RubiChess 2.2 > info string Loading net nn-fb50f1a2b1-20210705.nnue ... successful. Using NNUE evaluation. (1)
RubiChess 2.2 > id name RubiChess 2.2 NN-fb50f (avx2)
RubiChess 2.2 > id author Andreas Matthies
RubiChess 2.2 > option name Allow Large Pages type check default true
RubiChess 2.2 > option name BookBestMove type check default true
RubiChess 2.2 > option name BookDepth type spin default 255 min 0 max 255
RubiChess 2.2 > option name BookFile type string default <empty>
RubiChess 2.2 > option name Clear Hash type button
RubiChess 2.2 > option name Hash type spin default 16 min 1 max 1048576
RubiChess 2.2 > option name Move Overhead type spin default 50 min 0 max 5000
RubiChess 2.2 > option name MultiPV type spin default 1 min 1 max 64
RubiChess 2.2 > option name NNUENetpath type string default <Default>
RubiChess 2.2 > option name Ponder type check default false
RubiChess 2.2 > option name Syzygy50MoveRule type check default true
RubiChess 2.2 > option name SyzygyPath type string default <empty>
RubiChess 2.2 > option name SyzygyProbeLimit type spin default 7 min 0 max 7
RubiChess 2.2 > option name Threads type spin default 1 min 1 max 256
RubiChess 2.2 > option name UCI_Chess960 type check default false
RubiChess 2.2 > option name Use_NNUE type check default true
RubiChess 2.2 > uciok
RubiChess 2.2 < setoption name Hash value 4096
RubiChess 2.2 < setoption name Ponder value true
RubiChess 2.2 < setoption name SyzygyPath value D:\Tablebases\Syzygy
RubiChess 2.2 < setoption name UCI_Chess960 value true
RubiChess 2.2 < isready
Ethereal 13.25 > id name Ethereal 13.25 (NNUE)
Ethereal 13.25 > id author Andrew Grant, Alayan & Laldon
Ethereal 13.25 > option name Hash type spin default 16 min 2 max 131072
Ethereal 13.25 > option name Threads type spin default 1 min 1 max 2048
Ethereal 13.25 > option name EvalFile type string default <empty>
Ethereal 13.25 > option name MultiPV type spin default 1 min 1 max 256
Ethereal 13.25 > option name MoveOverhead type spin default 300 min 0 max 10000
Ethereal 13.25 > option name SyzygyPath type string default <empty>
Ethereal 13.25 > option name SyzygyProbeDepth type spin default 0 min 0 max 127
Ethereal 13.25 > option name Ponder type check default false
Ethereal 13.25 > option name AnalysisMode type check default false
Ethereal 13.25 > option name UCI_Chess960 type check default false
Ethereal 13.25 > info string licensed to CCLS_Testing
Ethereal 13.25 > uciok
Ethereal 13.25 < setoption name Hash value 4096
Ethereal 13.25 < setoption name SyzygyPath value D:\Tablebases\Syzygy
Ethereal 13.25 < setoption name Ponder value true
Ethereal 13.25 < setoption name UCI_Chess960 value true
Ethereal 13.25 < isready
Ethereal 13.25 > info string set Hash to 4096MB
Ethereal 13.25 > info string Found 510 WDL, 0 DTM and 510 DTZ tablebase files. Largest 6-men
Ethereal 13.25 > info string set SyzygyPath to D:\Tablebases\Syzygy
Ethereal 13.25 > info string set UCI_Chess960 to true
Ethereal 13.25 > readyok
RubiChess 2.2 < ucinewgame
Ethereal 13.25 < ucinewgame
RubiChess 2.2 > info string Found 510 (254 pawn-less / 256 with pawn) tablebases.
RubiChess 2.2 > readyok
Ethereal 13.25 < position fen qrbbnkrn/pppppppp/8/8/8/8/PPPPPPPP/QRBBNKRN w GBgb - 0 1
Ethereal 13.25 < go wtime 1800000 btime 1800000 winc 5000 binc 5000
Ethereal 13.25 > info depth 1 seldepth 1 multipv 1 score cp 66 time 16 nodes 6 nps 0 tbhits 0 hashfull 0 pv f1g1
Ethereal 13.25 > info depth 2 seldepth 2 multipv 1 score cp 33 time 16 nodes 20 nps 1000 tbhits 0 hashfull 0 pv f1g1 f8g8
Ethereal 13.25 > info depth 3 seldepth 4 multipv 1 score cp 6 time 16 nodes 102 nps 6000 tbhits 0 hashfull 0 pv d2d4 f8g8 f1g1
Ethereal 13.25 > info depth 4 seldepth 4 multipv 1 score cp 41 time 16 nodes 234 nps 13000 tbhits 0 hashfull 0 pv f1g1 f8g8 b2b3 h8g6
That is from the start of the same Rubi Vs. Ethereal game. Forget about Ethereal and look only at Rubi, you'll see this:
Code: Select all
RubiChess 2.2 < setoption name Hash value 4096
RubiChess 2.2 < setoption name Ponder value true
RubiChess 2.2 < setoption name SyzygyPath value D:\Tablebases\Syzygy
RubiChess 2.2 < setoption name UCI_Chess960 value true
RubiChess 2.2 < isready
RubiChess 2.2 < ucinewgame
RubiChess 2.2 > info string Found 510 (254 pawn-less / 256 with pawn) tablebases.
RubiChess 2.2 > readyok
Is the ucinewgame really sent before RubiChess says readyok after it has finished initializing the TBs, or is the log file messing with the order of the lines because it all happens very fast?