jhonnold / berserk

UCI Chess Engine written in C
GNU General Public License v3.0
218 stars 31 forks source link

go nodes command doesnt give number of nodes close to requested #556

Open PavelChess opened 7 months ago

PavelChess commented 7 months ago

After command go nodes 7000000 the last output of Berserk 13 is:

info depth 26 seldepth 42 multipv 1 score cp 34 upperbound wdl 168 789 43 nodes 5082631 nps 1787141 hashfull 977 tbhits 0 time 2844 pv e2e4 e7e5 info depth 26 currmove e2e4 currmovenumber 1 info depth 26 currmove g1f3 currmovenumber 2 bestmove e2e4 ponder e7e5

Every info packet corresponds to depth value. But because 7000000 nodes are not enough for next depth, the bestline and bestmove are linked to number of nodes of last depth and not to the requested count.

jhonnold commented 7 months ago

Why do you believe Berserk didn't search 7M nodes in the above? It's last depth print was at 5.08M nodes, then proceeded to search more before stopping (most likely at 7M nodes).

PavelChess commented 7 months ago

Sone other engines do output of final search result, for example, Stockfish, Komodo Dragon 1, RubiChess-20240112. Their output nodes count usually is little bigger than requested, and output nodes count of Komodo Dragon 1 is exactly as requested.

Then engine doesn't behave like this I suspect that final info string was not updated.

And even if the engine calculated requested number of nodes, GUI will not receive real info.

jhonnold commented 7 months ago

I will consider supporting this in the future, but it's not a high priority.