Author: Peter McKenzie
Date: 22:53:46 08/12/01
Go up one level in this thread
On August 12, 2001 at 23:23:10, Bruce Moreland wrote: >On August 12, 2001 at 20:58:22, James H Swinney wrote: > >>Why do some engines play weaker in CB GUI than in Winboard? >>James > >Winboard used to be just a graphical user interface that people could use to >play chess on ICS servers. > >When Tim Mann hooked GnuChess to Winboard, he created a standard. Many people >created engines coded to that standard, so they could get a GUI for free. > >There are a few GUI's that take advantage of the Winboard standard by taking the >place of Winboard. This allows them to connect to a bunch of existing engines >without doing any extra work. > >Chessbase is a GUI that runs Winboard engines. The problem is that it doesn't >run them the same way that Winboard does. > >Your typical chess engine operates like this: > >1) The engine is happily thinking about its move. When it feels like moving, it >moves. >2) Rather than just sitting there doing nothing while waiting for the opponent >to move, it makes a guess about what the opponent is going to do, executes that >move on its internal board, and starts thinking about the position following >that move. >3) If the predicted move comes to pass, the engine has gotten a big jump because >it's already been thinking about the eventual game position for a long time. If >the predicted move doesn't come to pass, it backs the (wrongly) predicted move >out, makes the one that really happened, and starts thinking about that. > >The system described above is called "pondering", or "permanent brain" if you >are German. > >Winboard ignores this stuff almost entirely. If the user makes a move, it gives >the move to the engine and tells it to think. It doesn't care what the engine >is doing when it's not the engine's turn to move. All it has are a couple of >commands, "easy" and "hard", which are generally meant to turn this behavior off >and on, but the behavior itself isn't that strictly defined. > >If I understand correctly, Chessbase doesn't do it like this. If it's the >engine's turn to think, it tells the engine to think, no problem. Not quite. When it is the engine's turn to move, chessbase sends a 'new'. Then it puts the engine into force mode and pumps it the moves from the game so far. Then it tells the engine to move. There are a couple of problems with this approach: - some engines clear their main hash table when getting the 'new' command, because the real winboard only sends this at the start of a game. Clearing a big hash table EVERY MOVE in a game will slow you down significantly. - playing through the entire game at each move is a minor performance hit. If implemented ok it is a trivial penalty, but some engines might have a slight delay in their routine that makes a game move. An engine could check its book for example, or just have some goofy timing issue because its thread synchronisation isn't that flash. If makemove takes 0.05 seconds, you will die in a game of 1 0 if you have to trundle thru. the movelist every move. But such a delay would not be noticable under the real winboard. > >But once the engine moves, Chessbase uses the "easy" command to turn pondering >off, then has its own command to tell the engine to ponder. > >An engine that doesn't have this extra command won't think on the opponent's >time, but the only way an engine would have this command is if it had been >written to work well with Chessbase. > >It's better to think on the opponent's time, so this makes engines that conform >to the normal Winboard specification weaker under Chessbase. > >Chessbase should fix this, rather than continuing to throw a kink into the >Winboard standard. > >bruce
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.