Tuesday, July 14, 2015

iCE 3 UCI Options


While I was adding MultiPV to iCE I spent some time reworking the whole UCI options in iCE. For version 3 I tried to improve the naming of the options and also changed some of the functionality.

Here is an overview of the options for the next version

Clear Hash: As the name suggests clears the main hash and all other caches incl. pawn, evaluation and material cache.

Ponder: Tells iCE that the game is run in ponder mode. This has a slight influences on the time iCE allocates for a move.

Hash: The size of the main hash in MB. The whole memory footprint of iCE is bigger as it allocates a fixed amount of memory for other caches (e.g. eval or pawn)

OwnBook: Tells iCE that it should use an external book in "ibf" format. This is a special proprietary format. Books of different sizes are available on my homepage. If OwnBook is set to true Book File has to point to the book.

Fallback to Internal Book: If iCE gets no external book (OwnBook = false) or the Book File option does not point to a valid book iCE can fallback to a small internal book that contains some common main lines. It is just part of the chess knowledge of iCE but some testers complained about this behavior. So setting this option to false will remove all opening knowledge in iCE. This is however not recommended as iCE runs then in a mode it was not designed for and tested in.

Output Search Depth Info: iCE will output search progress in UCI format (e.g. info depth 2 seldepth 2 score cp 107 nodes 42 nps 41999 time 0 multipv 1 pv e2e4 g7g6 hashfull 0 tbhits 0)

Output Total Times and Nodes: iCE will summarize the previous search statistics at the end of each search (e.g. info time 93 nodes 8796 nps 94580)

Output Current Move Info: iCE will output the move it currently calculates. This causes a lot of traffic between engine and GUI and messes up the console mode. But some user like to see that info in a GUI.

MultiPV: The number of PV lines iCE will output. Makes only sense for analyzing games or positions. It should not be used in game play as it makes the engine much weaker if set to a value larger than 1.

CommandFile: Setting this option will cause iCE to read a series of commands from an external file and execute them. This is more an internal option that I use for tuning and most likely not relevant for other users.

Console Mode: If set to true iCE will switch the output format of search depth info into something more readable if iCE runs in console mode. If connected to a GUI it should be set to false as the GUI otherwise will probably not understand the output of iCE anymore

Console mode = false:
go depth 8
info depth 1 seldepth 0 score cp 116 nodes 20 nps 20000 time 0 multipv 1 pv e2e4
 hashfull 0 tbhits 0
info depth 2 seldepth 2 score cp 107 nodes 42 nps 41999 time 0 multipv 1 pv e2e4
 g7g6 hashfull 0 tbhits 0
info depth 3 seldepth 3 score cp 73 nodes 133 nps 133000 time 0 multipv 1 pv e2e
4 d7d5 d1h5 hashfull 0 tbhits 0


Console mode = true:
setoption name console mode value true
go depth 8
 1/ 0 0:00   1.16  1. e4  (20)
 2/ 2 0:00   1.07  1. e4 g6  (42)
 3/ 3 0:00   0.73  1. e4 d5 2. Qh5  (133)
 4/ 4 0:00   0.31  1. e3 d5 2. d4 e6  (348)
 5/ 6 0:00   0.40  1. e3 e5 2. d4 Qf6 3. Nc3  (768)
 6/ 7 0:00   0.31  1. e3 d5 2. d4 e6 3. Bd2 Bd7  (1.760)


So when version 3 is released (later this year probably) then the uci options of iCE are hopefully more meaning and useful.