Loading opening book and tablebases (xboard vs uci)

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Loading opening book and tablebases (xboard vs uci)

Post by pedrox »

xboard:
--------

Until recently my engine had only the xboard protocol. When the engine receives the xboard command the first thing it does:

printf("feature done=0\n");

This gives the time needed to initialize all kinds of things, I can read the configuration file or the command line for different options and then I can create and allocate memory to the hash table, load opening book and for example load gaviota tablebases, even I can load 6 mem scorpio bitbases.

After receiving the protover command I finish with:

printf("feature done=1\n");

I have no problems with this and with any GUI with xboard protocol.


uci:
----

When I read the uci protocol, I thought I understood that isready and readyok could be the equivalent. The protocol recommends that the GUI send the engine the isready command to give the engine time to load for example tablebases.

So I have used these 2 commands in the uci protocol to do the same thing that with the feature done command in the xboard protocol. But I have some problems with this:

- On cutechess, I have problems loading the gaviota tablebases when they are first started, it seems that the gui considers that the time has been exceeded and the game is not started, however once the tablebases are cached the rest of games are played smoothly. Bigger is the problem if I want to load 6 mem of scorpio bitbases, again the problem is the first time they start, then in cache the rest of games go well.

cutechess GUI allows changing the response time to the isready command?

- In Arena there is no loading problem for tablebases or bitbases, even if it is the first time and they are not cached. However I find another problem is that Arena does not send the command isready when the user changes engine options and therefore my engine then does not know that you have to make those changes until the engine is restarted.

This isready and readyok seems dependent on the GUI. Are there any alternatives?
Ras
Posts: 2487
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: Loading opening book and tablebases (xboard vs uci)

Post by Ras »

pedrox wrote:On cutechess, I have problems loading the gaviota tablebases when they are first started
You shouldn't load them unless the GUI sends the relevant UCI option, and certainly not automatically as part of the engine startup procedure.

And isready is not there to tell the engine something has changed, it is there for the GUI to check whether the engine is responsive.

The engine should change configuration things when the relevant setoption command for some engine parameter has been processed without waiting for isready.
syzygy
Posts: 5557
Joined: Tue Feb 28, 2012 11:56 pm

Re: Loading opening book and tablebases (xboard vs uci)

Post by syzygy »

It can make a lot of sense to wait for isready, because otherwise the order that options are set may be important.

For example, if the hash table is allocated before the use of large pages is indicated, the allocation has to be redone. That makes little sense.

Or if NUMA is being used, allocation may have to be redone if the number of threads or the subset of nodes to be used is changed.

In Cfish, I delay the processing of such settings to the moment isready or the first "go" command is received.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Loading opening book and tablebases (xboard vs uci)

Post by Ferdy »

pedrox wrote:xboard:
--------

Until recently my engine had only the xboard protocol. When the engine receives the xboard command the first thing it does:

printf("feature done=0\n");

This gives the time needed to initialize all kinds of things, I can read the configuration file or the command line for different options and then I can create and allocate memory to the hash table, load opening book and for example load gaviota tablebases, even I can load 6 mem scorpio bitbases.

After receiving the protover command I finish with:

printf("feature done=1\n");

I have no problems with this and with any GUI with xboard protocol.


uci:
----

When I read the uci protocol, I thought I understood that isready and readyok could be the equivalent. The protocol recommends that the GUI send the engine the isready command to give the engine time to load for example tablebases.
Agreed that is one example.
pedrox wrote:So I have used these 2 commands in the uci protocol to do the same thing that with the feature done command in the xboard protocol. But I have some problems with this:

- On cutechess, I have problems loading the gaviota tablebases when they are first started, it seems that the gui considers that the time has been exceeded and the game is not started,
Show the log, with cutechess-cli use -debug option and redirect output to a file with >log.deb, then examine the log.

If GUI has sent isready to the engine, you are guaranteed that the GUI will wait for the readyok.

Code: Select all

* isready
	this is used to synchronize the engine with the GUI. When the GUI has sent a command or
	multiple commands that can take some time to complete,
	this command can be used to wait for the engine to be ready again or
	to ping the engine to find out if it is still alive.
	E.g. this should be sent after setting the path to the tablebases as this can take some time.
	This command is also required once before the engine is asked to do any search
	to wait for the engine to finish initializing.
	This command must always be answered with "readyok" and can be sent also when the engine is calculating
	in which case the engine should also immediately answer with "readyok" without stopping the search.
User avatar
hgm
Posts: 27788
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Loading opening book and tablebases (xboard vs uci)

Post by hgm »

syzygy wrote:It can make a lot of sense to wait for isready, because otherwise the order that options are set may be important.

For example, if the hash table is allocated before the use of large pages is indicated, the allocation has to be redone. That makes little sense.

Or if NUMA is being used, allocation may have to be redone if the number of threads or the subset of nodes to be used is changed.

In Cfish, I delay the processing of such settings to the moment isready or the first "go" command is received.
It makes sense to do this at engine startup, because UCI specs say that 'isready' is mandatory there. There is no guarantee 'isready' will be sent at any later time, however. So the engine must immediately respond to setoption command when not in the startup phase. Waiting for 'go' is inadvisable, as that is probably the moment your clock starts running in the GUI.
syzygy
Posts: 5557
Joined: Tue Feb 28, 2012 11:56 pm

Re: Loading opening book and tablebases (xboard vs uci)

Post by syzygy »

hgm wrote:Waiting for 'go' is inadvisable, as that is probably the moment your clock starts running in the GUI.
That is the price the user will have to pay for changing such options halfway a game :-)
User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Re: Loading opening book and tablebases (xboard vs uci)

Post by pedrox »

Ras wrote:
pedrox wrote:On cutechess, I have problems loading the gaviota tablebases when they are first started
You shouldn't load them unless the GUI sends the relevant UCI option, and certainly not automatically as part of the engine startup procedure.

And isready is not there to tell the engine something has changed, it is there for the GUI to check whether the engine is responsive.

The engine should change configuration things when the relevant setoption command for some engine parameter has been processed without waiting for isready.
I used to do this before, but I had a problem.

The engine can use scorpio bitbases, in these bitbases the user could change 3 options: path, cache size and load type.

If I receive an option to change the cache size I would have to download the bitbases and reload with the desired cache. If the user changes the load type or path also then I might have to do that process 3 times and then, which also gave me some problem like for example in chessGUI.

Maybe there is a possibility to wait to receive all the options and delay it to do all the configuration once and not use isready, but it would be more complicated and I do not see how either.
syzygy
Posts: 5557
Joined: Tue Feb 28, 2012 11:56 pm

Re: Loading opening book and tablebases (xboard vs uci)

Post by syzygy »

pedrox wrote:Maybe there is a possibility to wait to receive all the options and delay it to do all the configuration once and not use isready, but it would be more complicated and I do not see how either.
So you could process the delayed options the next time you receive one of "isready" or "go" and perhaps also "ucinewgame".

If the processing/loading takes long, then obviously delaying it until a "go" command has the considerable disadvantage that the processing is done while the clock is running, but if costly options are being changed while the game is being played there seems to be a problem anyway...

In the end, I guess this shows yet another shortcoming of the UCI protocol.
User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Re: Loading opening book and tablebases (xboard vs uci)

Post by pedrox »

Ferdy wrote:
pedrox wrote:xboard:
--------

Until recently my engine had only the xboard protocol. When the engine receives the xboard command the first thing it does:

printf("feature done=0\n");

This gives the time needed to initialize all kinds of things, I can read the configuration file or the command line for different options and then I can create and allocate memory to the hash table, load opening book and for example load gaviota tablebases, even I can load 6 mem scorpio bitbases.

After receiving the protover command I finish with:

printf("feature done=1\n");

I have no problems with this and with any GUI with xboard protocol.


uci:
----

When I read the uci protocol, I thought I understood that isready and readyok could be the equivalent. The protocol recommends that the GUI send the engine the isready command to give the engine time to load for example tablebases.
Agreed that is one example.
pedrox wrote:So I have used these 2 commands in the uci protocol to do the same thing that with the feature done command in the xboard protocol. But I have some problems with this:

- On cutechess, I have problems loading the gaviota tablebases when they are first started, it seems that the gui considers that the time has been exceeded and the game is not started,
Show the log, with cutechess-cli use -debug option and redirect output to a file with >log.deb, then examine the log.

If GUI has sent isready to the engine, you are guaranteed that the GUI will wait for the readyok.

Code: Select all

* isready
	this is used to synchronize the engine with the GUI. When the GUI has sent a command or
	multiple commands that can take some time to complete,
	this command can be used to wait for the engine to be ready again or
	to ping the engine to find out if it is still alive.
	E.g. this should be sent after setting the path to the tablebases as this can take some time.
	This command is also required once before the engine is asked to do any search
	to wait for the engine to finish initializing.
	This command must always be answered with "readyok" and can be sent also when the engine is calculating
	in which case the engine should also immediately answer with "readyok" without stopping the search.

I've looked a little better at the problem with cutechess. The problem seems to be related to the load of scorpio bitbases and not to the load of gaviota tablebases.

And one important thing is that the problem only occurs on the first load attempt, then it seems like the bitbases are in memory and load much faster.

First attempt:

Code: Select all

187 >danasah700_uci(0): uci
1027 <danasah700_uci&#40;0&#41;&#58; id name DanaSah 7.0
1030 <danasah700_uci&#40;0&#41;&#58; id author Pedro Castro
1035 <danasah700_uci&#40;0&#41;&#58; option name OwnBook type check default false
1041 <danasah700_uci&#40;0&#41;&#58; option name Book File type string default ../book/book.bin
1048 <danasah700_uci&#40;0&#41;&#58; option name Hash type spin default 256 min 8 max 1024
1055 <danasah700_uci&#40;0&#41;&#58; option name EndGames Tablebases type combo default Gaviota-Scorpio var None var Gaviota var Scorpio var Gaviota-Scorpio
1068 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Path type string default ../egbb/
1074 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Men type spin default 4 min 4 max 6
1090 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Cache Size type spin default 4 min 4 max 128
1092 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Load type combo default LOAD_4MEN var LOAD_NONE var LOAD_4MEN var SMART_LOAD var LOAD_5MEN
1094 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbPath type string default ../gtb/gtb4/
1096 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbCache type spin default 16 min 16 max 128
1098 <danasah700_uci&#40;0&#41;&#58; option name Ponder type check default true
1099 <danasah700_uci&#40;0&#41;&#58; option name UCI_Chess960 type check default false
1101 <danasah700_uci&#40;0&#41;&#58; option name GUI Has Ucinewgame Command type check default true
1102 <danasah700_uci&#40;0&#41;&#58; option name Clear Hash type button
1103 <danasah700_uci&#40;0&#41;&#58; option name Clear Tablebases Cache type button
1105 <danasah700_uci&#40;0&#41;&#58; uciok
1105 >danasah700_uci&#40;0&#41;&#58; setoption name Bitbases Path value d&#58;\egbb5men\
1117 >danasah700_uci&#40;0&#41;&#58; setoption name GaviotaTbPath value d&#58;\gtb\
1118 >danasah700_uci&#40;0&#41;&#58; setoption name Hash value 128
1119 >danasah700_uci&#40;0&#41;&#58; isready
9077 <danasah700_uci&#40;0&#41;&#58; EgbbProbe 4.1 by Daniel Shawul
Engine danasah700_uci&#40;0&#41; failed to respond to ping
Terminating process of engine danasah700_uci&#40;0&#41;
Finished game 1 &#40;danasah700_uci vs Gaviota 1.0 x64&#41;&#58; 1/2-1/2 &#123;Draw by stalled connection&#125;
All other loads:

Code: Select all

163 >danasah700_uci&#40;0&#41;&#58; uci
255 <danasah700_uci&#40;0&#41;&#58; id name DanaSah 7.0
259 <danasah700_uci&#40;0&#41;&#58; id author Pedro Castro
263 <danasah700_uci&#40;0&#41;&#58; option name OwnBook type check default false
268 <danasah700_uci&#40;0&#41;&#58; option name Book File type string default ../book/book.bin
275 <danasah700_uci&#40;0&#41;&#58; option name Hash type spin default 256 min 8 max 1024
279 <danasah700_uci&#40;0&#41;&#58; option name EndGames Tablebases type combo default Gaviota-Scorpio var None var Gaviota var Scorpio var Gaviota-Scorpio
283 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Path type string default ../egbb/
285 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Men type spin default 4 min 4 max 6
286 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Cache Size type spin default 4 min 4 max 128
289 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Load type combo default LOAD_4MEN var LOAD_NONE var LOAD_4MEN var SMART_LOAD var LOAD_5MEN
292 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbPath type string default ../gtb/gtb4/
293 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbCache type spin default 16 min 16 max 128
294 <danasah700_uci&#40;0&#41;&#58; option name Ponder type check default true
295 <danasah700_uci&#40;0&#41;&#58; option name UCI_Chess960 type check default false
296 <danasah700_uci&#40;0&#41;&#58; option name GUI Has Ucinewgame Command type check default true
298 <danasah700_uci&#40;0&#41;&#58; option name Clear Hash type button
299 <danasah700_uci&#40;0&#41;&#58; option name Clear Tablebases Cache type button
300 <danasah700_uci&#40;0&#41;&#58; uciok
300 >danasah700_uci&#40;0&#41;&#58; setoption name Bitbases Path value d&#58;\egbb5men\
301 >danasah700_uci&#40;0&#41;&#58; setoption name GaviotaTbPath value d&#58;\gtb\
302 >danasah700_uci&#40;0&#41;&#58; setoption name Hash value 128
303 >danasah700_uci&#40;0&#41;&#58; isready
484 <danasah700_uci&#40;0&#41;&#58; EgbbProbe 4.1 by Daniel Shawul
892 <danasah700_uci&#40;0&#41;&#58; Loading egbbs....
180 egbbs loaded !      
1740 <danasah700_uci&#40;0&#41;&#58; GTB PATHS
1740 <danasah700_uci&#40;0&#41;&#58;   main&#58; d&#58;\gtb\
1741 <danasah700_uci&#40;0&#41;&#58; GTB initialization
1742 <danasah700_uci&#40;0&#41;&#58;   Compression  Scheme = 4
1743 <danasah700_uci&#40;0&#41;&#58;   Compression Indexes &#40;3-pc&#41; = PASSED
1744 <danasah700_uci&#40;0&#41;&#58;   Compression Indexes &#40;4-pc&#41; = PASSED
1745 <danasah700_uci&#40;0&#41;&#58;   Compression Indexes &#40;5-pc&#41; = PASSED
1746 <danasah700_uci&#40;0&#41;&#58; Some 3-pc TBs available
1747 <danasah700_uci&#40;0&#41;&#58; 3-pc TBs complete
1748 <danasah700_uci&#40;0&#41;&#58; Some 4-pc TBs available
1748 <danasah700_uci&#40;0&#41;&#58; 4-pc TBs complete
1749 <danasah700_uci&#40;0&#41;&#58; Some 5-pc TBs available
1750 <danasah700_uci&#40;0&#41;&#58; 5-pc TBs complete
1751 <danasah700_uci&#40;0&#41;&#58; readyok
...
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Loading opening book and tablebases (xboard vs uci)

Post by Ferdy »

pedrox wrote:
Ferdy wrote:
pedrox wrote:xboard:
--------

Until recently my engine had only the xboard protocol. When the engine receives the xboard command the first thing it does:

printf("feature done=0\n");

This gives the time needed to initialize all kinds of things, I can read the configuration file or the command line for different options and then I can create and allocate memory to the hash table, load opening book and for example load gaviota tablebases, even I can load 6 mem scorpio bitbases.

After receiving the protover command I finish with:

printf("feature done=1\n");

I have no problems with this and with any GUI with xboard protocol.


uci:
----

When I read the uci protocol, I thought I understood that isready and readyok could be the equivalent. The protocol recommends that the GUI send the engine the isready command to give the engine time to load for example tablebases.
Agreed that is one example.
pedrox wrote:So I have used these 2 commands in the uci protocol to do the same thing that with the feature done command in the xboard protocol. But I have some problems with this:

- On cutechess, I have problems loading the gaviota tablebases when they are first started, it seems that the gui considers that the time has been exceeded and the game is not started,
Show the log, with cutechess-cli use -debug option and redirect output to a file with >log.deb, then examine the log.

If GUI has sent isready to the engine, you are guaranteed that the GUI will wait for the readyok.

Code: Select all

* isready
	this is used to synchronize the engine with the GUI. When the GUI has sent a command or
	multiple commands that can take some time to complete,
	this command can be used to wait for the engine to be ready again or
	to ping the engine to find out if it is still alive.
	E.g. this should be sent after setting the path to the tablebases as this can take some time.
	This command is also required once before the engine is asked to do any search
	to wait for the engine to finish initializing.
	This command must always be answered with "readyok" and can be sent also when the engine is calculating
	in which case the engine should also immediately answer with "readyok" without stopping the search.

I've looked a little better at the problem with cutechess. The problem seems to be related to the load of scorpio bitbases and not to the load of gaviota tablebases.

And one important thing is that the problem only occurs on the first load attempt, then it seems like the bitbases are in memory and load much faster.

First attempt:

Code: Select all

187 >danasah700_uci&#40;0&#41;&#58; uci
1027 <danasah700_uci&#40;0&#41;&#58; id name DanaSah 7.0
1030 <danasah700_uci&#40;0&#41;&#58; id author Pedro Castro
1035 <danasah700_uci&#40;0&#41;&#58; option name OwnBook type check default false
1041 <danasah700_uci&#40;0&#41;&#58; option name Book File type string default ../book/book.bin
1048 <danasah700_uci&#40;0&#41;&#58; option name Hash type spin default 256 min 8 max 1024
1055 <danasah700_uci&#40;0&#41;&#58; option name EndGames Tablebases type combo default Gaviota-Scorpio var None var Gaviota var Scorpio var Gaviota-Scorpio
1068 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Path type string default ../egbb/
1074 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Men type spin default 4 min 4 max 6
1090 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Cache Size type spin default 4 min 4 max 128
1092 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Load type combo default LOAD_4MEN var LOAD_NONE var LOAD_4MEN var SMART_LOAD var LOAD_5MEN
1094 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbPath type string default ../gtb/gtb4/
1096 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbCache type spin default 16 min 16 max 128
1098 <danasah700_uci&#40;0&#41;&#58; option name Ponder type check default true
1099 <danasah700_uci&#40;0&#41;&#58; option name UCI_Chess960 type check default false
1101 <danasah700_uci&#40;0&#41;&#58; option name GUI Has Ucinewgame Command type check default true
1102 <danasah700_uci&#40;0&#41;&#58; option name Clear Hash type button
1103 <danasah700_uci&#40;0&#41;&#58; option name Clear Tablebases Cache type button
1105 <danasah700_uci&#40;0&#41;&#58; uciok
1105 >danasah700_uci&#40;0&#41;&#58; setoption name Bitbases Path value d&#58;\egbb5men\
1117 >danasah700_uci&#40;0&#41;&#58; setoption name GaviotaTbPath value d&#58;\gtb\
1118 >danasah700_uci&#40;0&#41;&#58; setoption name Hash value 128
1119 >danasah700_uci&#40;0&#41;&#58; isready
9077 <danasah700_uci&#40;0&#41;&#58; EgbbProbe 4.1 by Daniel Shawul
Engine danasah700_uci&#40;0&#41; failed to respond to ping
Terminating process of engine danasah700_uci&#40;0&#41;
Finished game 1 &#40;danasah700_uci vs Gaviota 1.0 x64&#41;&#58; 1/2-1/2 &#123;Draw by stalled connection&#125;
All other loads:

Code: Select all

163 >danasah700_uci&#40;0&#41;&#58; uci
255 <danasah700_uci&#40;0&#41;&#58; id name DanaSah 7.0
259 <danasah700_uci&#40;0&#41;&#58; id author Pedro Castro
263 <danasah700_uci&#40;0&#41;&#58; option name OwnBook type check default false
268 <danasah700_uci&#40;0&#41;&#58; option name Book File type string default ../book/book.bin
275 <danasah700_uci&#40;0&#41;&#58; option name Hash type spin default 256 min 8 max 1024
279 <danasah700_uci&#40;0&#41;&#58; option name EndGames Tablebases type combo default Gaviota-Scorpio var None var Gaviota var Scorpio var Gaviota-Scorpio
283 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Path type string default ../egbb/
285 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Men type spin default 4 min 4 max 6
286 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Cache Size type spin default 4 min 4 max 128
289 <danasah700_uci&#40;0&#41;&#58; option name Bitbases Load type combo default LOAD_4MEN var LOAD_NONE var LOAD_4MEN var SMART_LOAD var LOAD_5MEN
292 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbPath type string default ../gtb/gtb4/
293 <danasah700_uci&#40;0&#41;&#58; option name GaviotaTbCache type spin default 16 min 16 max 128
294 <danasah700_uci&#40;0&#41;&#58; option name Ponder type check default true
295 <danasah700_uci&#40;0&#41;&#58; option name UCI_Chess960 type check default false
296 <danasah700_uci&#40;0&#41;&#58; option name GUI Has Ucinewgame Command type check default true
298 <danasah700_uci&#40;0&#41;&#58; option name Clear Hash type button
299 <danasah700_uci&#40;0&#41;&#58; option name Clear Tablebases Cache type button
300 <danasah700_uci&#40;0&#41;&#58; uciok
300 >danasah700_uci&#40;0&#41;&#58; setoption name Bitbases Path value d&#58;\egbb5men\
301 >danasah700_uci&#40;0&#41;&#58; setoption name GaviotaTbPath value d&#58;\gtb\
302 >danasah700_uci&#40;0&#41;&#58; setoption name Hash value 128
303 >danasah700_uci&#40;0&#41;&#58; isready
484 <danasah700_uci&#40;0&#41;&#58; EgbbProbe 4.1 by Daniel Shawul
892 <danasah700_uci&#40;0&#41;&#58; Loading egbbs....
180 egbbs loaded !      
1740 <danasah700_uci&#40;0&#41;&#58; GTB PATHS
1740 <danasah700_uci&#40;0&#41;&#58;   main&#58; d&#58;\gtb\
1741 <danasah700_uci&#40;0&#41;&#58; GTB initialization
1742 <danasah700_uci&#40;0&#41;&#58;   Compression  Scheme = 4
1743 <danasah700_uci&#40;0&#41;&#58;   Compression Indexes &#40;3-pc&#41; = PASSED
1744 <danasah700_uci&#40;0&#41;&#58;   Compression Indexes &#40;4-pc&#41; = PASSED
1745 <danasah700_uci&#40;0&#41;&#58;   Compression Indexes &#40;5-pc&#41; = PASSED
1746 <danasah700_uci&#40;0&#41;&#58; Some 3-pc TBs available
1747 <danasah700_uci&#40;0&#41;&#58; 3-pc TBs complete
1748 <danasah700_uci&#40;0&#41;&#58; Some 4-pc TBs available
1748 <danasah700_uci&#40;0&#41;&#58; 4-pc TBs complete
1749 <danasah700_uci&#40;0&#41;&#58; Some 5-pc TBs available
1750 <danasah700_uci&#40;0&#41;&#58; 5-pc TBs complete
1751 <danasah700_uci&#40;0&#41;&#58; readyok
...
Using cutechess-cli 1.0.0 Danasah looks fine.

Code: Select all

256 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; info string AvailableScorpioEgbbMen is set to 5
257 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; info string Hash is set to 64mb
267 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; info string ScorpioBitBasesPath is set to C&#58;\myfiles\chess\3-4-5-men-egbb\
268 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; info string UseScorpioBitBases is set to true
268 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; info string Deuterium said Please use egbbdll64.dll file
269 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; EgbbProbe 4.1 by Daniel Shawul
313 <DanaSah 7.0&#40;0&#41;&#58; Loading egbbs....
180 egbbs loaded !      
317 <DanaSah 7.0&#40;0&#41;&#58; GTB PATHS
317 <DanaSah 7.0&#40;0&#41;&#58;   main&#58; ../gtb/gtb4/
317 <DanaSah 7.0&#40;0&#41;&#58; GTB initialization
317 <DanaSah 7.0&#40;0&#41;&#58;   Compression  Scheme = 4
317 <DanaSah 7.0&#40;0&#41;&#58;   Compression Indexes = **FAILED**
318 <DanaSah 7.0&#40;0&#41;&#58; No 3-pc TBs available
318 <DanaSah 7.0&#40;0&#41;&#58; No 4-pc TBs available
318 <DanaSah 7.0&#40;0&#41;&#58; No 5-pc TBs available
318 <DanaSah 7.0&#40;0&#41;&#58; readyok
331 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; Loading egbbs....
180 egbbs loaded !      
331 <Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; readyok
Started game 1 of 30000 &#40;DanaSah 7.0 vs Deuterium v14.3.34.130 64bit&#41;
332 >DanaSah 7.0&#40;0&#41;&#58; ucinewgame
332 >DanaSah 7.0&#40;0&#41;&#58; setoption name Ponder value false
332 >DanaSah 7.0&#40;0&#41;&#58; position startpos
332 >Deuterium v14.3.34.130 64bit&#40;1&#41;&#58; ucinewgame
Be noted that when you send info to GUI, use info string <text comment>.