Cutechess-cli: A command line tool for engine-engine matches

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Marc Lacrosse
Posts: 511
Joined: Wed Mar 08, 2006 10:05 pm

Re: Cutechess-cli: a little problem with Bright 0.4a

Post by Marc Lacrosse »

Same problem with Colossus 2008b

colossus has the following UCI option :

Code: Select all

option name NalimovPath type string
I get :

Code: Select all

Invalid UCI option from "Colossus-2008b" : "name NalimovPath type string"
Seems similar : problem with options of the "string" type if no default value is defined ?

Marc
User avatar
ilari
Posts: 750
Joined: Mon Mar 27, 2006 7:45 pm
Location: Finland

Re: Cutechess-cli: need some help

Post by ilari »

Marc Lacrosse wrote:By the way it works well with absolute paths.
Yeah, relative paths don't work currently. I'll fix that in the next version.
User avatar
ilari
Posts: 750
Joined: Mon Mar 27, 2006 7:45 pm
Location: Finland

Re: Cutechess-cli: a little problem with Bright 0.4a

Post by ilari »

Marc Lacrosse wrote:I have the following problem with Bright -0.4a :

I get the following error message and the first game won't begin :

Code: Select all

Invalid UCI option from "Bright-0.4a" : "name UCI_Opponent type string"
when I launch bright from the command line there is effectively a "UCI-Opponent" uci option. This is the only option without a default value : is this the origin of the problem ?
It reads :
option name UCI_Opponent type string

I suppose your parser could well be hanging trying to get a default value ...

Marc
The parser works fine, but UciOption::isOk() returns false if the default value is empty. This can be fixed by removing two lines of code.

I'll probably release a new version next week.
User avatar
ilari
Posts: 750
Joined: Mon Mar 27, 2006 7:45 pm
Location: Finland

Re: Cutechess-cli: A command line tool for engine-engine mat

Post by ilari »

I've uploaded a new version (0.1.3) with a few changes:

- Fix an error in the help text (the uci option thing)
- UCI string options without a default value are now accepted
- Support relative paths in the "dir" engine option
- Support millisecond-precision in time controls

The millisecond-precision uses the same format as any other time control in Cutechess-cli. Eg. "tc=10.5+0.15" means that the time per tc is 10.5 seconds, and the time increment is 0.15 seconds (150 ms). Millisecond-precision only works with UCI engines.

Note for Windows users:
I'm still working on getting rid of the 100 - 200 ms lag between moves. Currently crazy-fast games (eg. under 10 seconds per game) don't work that well, at least not on my PC. I may have to write my own fork of QProcess, which means a lot of work. The Linux and OSX versions don't have this problem.
Marc Lacrosse
Posts: 511
Joined: Wed Mar 08, 2006 10:05 pm

Re: Cutechess-cli: A command line tool for engine-engine mat

Post by Marc Lacrosse »

ilari wrote:I've uploaded a new version (0.1.3) with a few changes:

- Fix an error in the help text (the uci option thing)
- UCI string options without a default value are now accepted
- Support relative paths in the "dir" engine option
- Support millisecond-precision in time controls

The millisecond-precision uses the same format as any other time control in Cutechess-cli. Eg. "tc=10.5+0.15" means that the time per tc is 10.5 seconds, and the time increment is 0.15 seconds (150 ms). Millisecond-precision only works with UCI engines.

Note for Windows users:
I'm still working on getting rid of the 100 - 200 ms lag between moves. Currently crazy-fast games (eg. under 10 seconds per game) don't work that well, at least not on my PC. I may have to write my own fork of QProcess, which means a lot of work. The Linux and OSX versions don't have this problem.
Thanks a lot.
I will give this new version a try as soon as possible.
Marc
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Millispeconds and a new EPD spec

Post by sje »

ilari wrote:I've uploaded a new version (0.1.3) with a few changes:

- Support millisecond-precision in time controls
I agree that millisecond resolution is the way to go. Piloted spacecraft use a millisecond period update for critical telemetry; if it's good enough for a spaceship then I suppose it's good enough for a chess clock.

A new EPD specification is coming, and it uses a tighter formalism for a number of things including time values. Example:

Code: Select all

r1bqkbnr/pppp1ppp/2n5/8/3Q4/2N5/PPP1PPPP/R1B1KBNR w KQkq - 1 4 acd 6; acn 1436575; cc 4:55.265 4:54.606; pes +0.020; pv Qd3 h6 Nf3 Nf6 e4 Bd6; te 1.445; tu 1.333;
Note:

1) The half move counter and the full move number now appear explicitly as the fifth and sixth fields of a standard FEN position specification. The earlier EPD version had these omitted or appearing as optional operations (hmvc and fmvn).

2) Most things don't change: acd, acn, am, bm, pv, sv, etc.

3) Some things are deprecated, such as pm (use the first parameter value of pv instead).

4) All time values share the same the same format of DDD:HH:MM:SS.mmm with optional leading zero suppression. Example: cc (chess clock) has a White and a Black countdown time operand.

5) Instead of acs, te records analysis elapsed (wall) time, and tu represents usage time. Usage may be greater than elapsed time for multicore analysis.

6) The ce operator is deprecated; the replacement pes (pawn equivalent score) operator gives an evaluation in signed floating point pawns with millipawn resolution. There are a few non-decimal values: MateInN (e.g., MateIn3), LoseInN, Even, PosInf, NegInf, and Broken.

7) A few operations are undecided at the moment, like dm and solve.

8) Symbol operands are never quoted and string operands are always quoted. Examples:

id WAC.241;
name "Win at Chess problem 241";
User avatar
ilari
Posts: 750
Joined: Mon Mar 27, 2006 7:45 pm
Location: Finland

Re: Millispeconds and a new EPD spec

Post by ilari »

sje wrote:
ilari wrote:I've uploaded a new version (0.1.3) with a few changes:

- Support millisecond-precision in time controls
I agree that millisecond resolution is the way to go. Piloted spacecraft use a millisecond period update for critical telemetry; if it's good enough for a spaceship then I suppose it's good enough for a chess clock.
The chess clock in Cutechess-cli always used milliseconds. I was just a bit reluctant to add features that are only supported by the UCI protocol. But I'm slowly beginning to prefer UCI over Xboard, and I don't want Xboard's limitations and quirks to limit the usefulness of my tools.

A new EPD specification is coming, and it uses a tighter formalism for a number of things including time values. Example...
Thanks for the info. Obviously EPD support is on my TODO list for Cute Chess, so I'll keep an eye on any new specs.
Edsel Apostol
Posts: 803
Joined: Mon Jul 17, 2006 5:53 am
Full name: Edsel Apostol

Re: Cutechess-cli: A command line tool for engine-engine mat

Post by Edsel Apostol »

ilari wrote:I've uploaded a new version (0.1.3) with a few changes:

- Fix an error in the help text (the uci option thing)
- UCI string options without a default value are now accepted
- Support relative paths in the "dir" engine option
- Support millisecond-precision in time controls

The millisecond-precision uses the same format as any other time control in Cutechess-cli. Eg. "tc=10.5+0.15" means that the time per tc is 10.5 seconds, and the time increment is 0.15 seconds (150 ms). Millisecond-precision only works with UCI engines.

Note for Windows users:
I'm still working on getting rid of the 100 - 200 ms lag between moves. Currently crazy-fast games (eg. under 10 seconds per game) don't work that well, at least not on my PC. I may have to write my own fork of QProcess, which means a lot of work. The Linux and OSX versions don't have this problem.
Thanks a lot for this. By the way, I've noticed that the milliseconds increment doesn't reflect in the PGN file.

Here's my setup that runs an average of one game per minute:

Code: Select all

cutechess-cli -fcp cmd=glaurung-w32.exe dir=D:\chess\tests\glaurung2.2\Windows\ uci/Threads=1 -scp name=t20090402 cmd=t20090402.exe dir=D:\chess\tests\src20090402\  -both proto=uci tc=5+0.4 uci/Hash=32 -draw 120 10 -resign 5 300 -games 60 -pgnin D:\chess\tests\cutechess-cli\NoomenTestsuite2008.pgn -repeat -pgnout testgames.pgn
And here's one of the PGN result on slow hardware:

Code: Select all

[Event "?"]
[Site "?"]
[Date "2009.04.08"]
[Round "1"]
[White "Glaurung 2.2 JA"]
[Black "t20090402"]
[Result "0-1"]
[PlyCount "77"]
[TimeControl "5+0"]

1. e4 {book} c5 {book} 2. Nf3 {book} d6 {book} 3. d4 {book} cxd4 {book}
4. Nxd4 {book} Nf6 {book} 5. Nc3 {book} a6 {book} 6. Bg5 {book} e6 {book}
7. f4 {book} Nbd7 {book} 8. Qe2 {book} Qc7 {book} 9. O-O-O {book} b5 {book}
10. a3 {book} Bb7 {book} 11. g4 {book} Be7 {book} 12. Kb1 {+0.37/8 1s}
h6 {+0.08/11 2s} 13. Bh4 {+0.27/10 1s} Nb6 {-0.11/10 3s} 14. Bg3 {+0.23/8 1s}
Nc4 {+0.12/8 1s} 15. Rd3 {+0.19/9 1s} Nd7 {+0.62/10 2s} 16. h4 {+0.09/9 1s}
O-O {+0.73/9 1s} 17. Qf3 {+0.21/9 1s} Rac8 {+0.51/8 1s} 18. g5 {+0.11/9 1s}
h5 {+0.47/9 1s} 19. Be2 {+0.50/9 1s} g6 {+0.59/9 1s} 20. Rg1 {+0.41/9 1s}
e5 {+2.09/10 1s} 21. fxe5 {-1.13/10 1s} Ndxe5 {+1.99/9 1s}
22. Bxe5 {-1.15/10 1s} Nxe5 {+1.78/10 1s} 23. Qe3 {-1.25/10 1s}
Nxd3 {+1.78/10 1s} 24. Qxd3 {-1.25/11 1s} Qc5 {+1.90/9 1s} 25. Bf3 {-1.37/10 1s}
Qe5 {+1.86/9 1s} 26. Nd5 {-1.39/10 1s} Rfe8 {+1.92/9 1s} 27. Rh1 {-1.31/10 1s}
Kg7 {+2.01/9 1s} 28. Rf1 {-1.21/9 1s} Qg3 {0.00/8 0s} 29. Nb6 {-1.31/9 1s}
Rc5 {0.00/8 0s} 30. Nb3 {-1.39/9 1s} Rc7 {0.00/8 0s} 31. Nd5 {-1.92/9 1s}
Bxd5 {0.00/8 0s} 32. Qd4+ {-2.29/10 1s} Kg8 {+2.78/9 0s} 33. Qxd5 {-2.84/10 0s}
Rf8 {+3.21/9 0s} 34. Qd2 {-2.92/9 0s} Qxh4 {+3.34/9 0s} 35. Rg1 {-3.09/11 1s}
Rc4 {+3.49/9 0s} 36. c3 {-3.00/10 0s} Rfc8 {+3.33/9 0s} 37. Qe3 {-3.11/9 0s}
R8c7 {+3.28/8 0s} 38. Ka1 {-3.13/10 0s} Qh2 {+3.24/9 0s} 39. Nc1 {-3.33/9 0s}
{Black wins by adjudication} 0-1
Gian-Carlo Pascutto
Posts: 1243
Joined: Sat Dec 13, 2008 7:00 pm

Re: Cutechess-cli: A command line tool for engine-engine mat

Post by Gian-Carlo Pascutto »

Ubuntu 8.04 with Qt-4.5

~/git/cute-cli$ make
cd projects/ && make -f Makefile
make[1]: Entering directory `/home/pascuttg/git/cute-cli/projects'
cd lib/ && make -f Makefile
make[2]: Entering directory `/home/pascuttg/git/cute-cli/projects/lib'
make[2]: Nothing to be done for `first'.
make[2]: Leaving directory `/home/pascuttg/git/cute-cli/projects/lib'
cd gui/ && make -f Makefile
make[2]: Entering directory `/home/pascuttg/git/cute-cli/projects/gui'
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DLIB_EXPORT="" -DCUTECHESS_VERSION=\"unknown\" -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtSvg -I/usr/include/qt4/QtSvg -I/usr/include/qt4 -I../lib/src -I. -Icomponents/hintlineedit/src -I.moc -Isrc -o .obj/enginemanagementdlg.o src/enginemanagementdlg.cpp
src/enginemanagementdlg.cpp:24: error: ‘EngineManagementDialog’ has not been declared
src/enginemanagementdlg.cpp:25: error: ISO C++ forbids declaration of ‘EngineManagementDialog’ with no type
src/enginemanagementdlg.cpp: In function ‘int EngineManagementDialog(EngineConfigurationModel*, QWidget*)’:
src/enginemanagementdlg.cpp:26: error: only constructors take base initializers
src/enginemanagementdlg.cpp:27: error: invalid use of ‘this’ in non-member function
User avatar
ilari
Posts: 750
Joined: Mon Mar 27, 2006 7:45 pm
Location: Finland

Re: Cutechess-cli: A command line tool for engine-engine mat

Post by ilari »

Gian-Carlo Pascutto wrote:Ubuntu 8.04 with Qt-4.5

~/git/cute-cli$ make
cd projects/ && make -f Makefile
make[1]: Entering directory `/home/pascuttg/git/cute-cli/projects'
cd lib/ && make -f Makefile
make[2]: Entering directory `/home/pascuttg/git/cute-cli/projects/lib'
make[2]: Nothing to be done for `first'.
make[2]: Leaving directory `/home/pascuttg/git/cute-cli/projects/lib'
cd gui/ && make -f Makefile
make[2]: Entering directory `/home/pascuttg/git/cute-cli/projects/gui'
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DLIB_EXPORT="" -DCUTECHESS_VERSION="unknown" -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtSvg -I/usr/include/qt4/QtSvg -I/usr/include/qt4 -I../lib/src -I. -Icomponents/hintlineedit/src -I.moc -Isrc -o .obj/enginemanagementdlg.o src/enginemanagementdlg.cpp
src/enginemanagementdlg.cpp:24: error: ‘EngineManagementDialog’ has not been declared
src/enginemanagementdlg.cpp:25: error: ISO C++ forbids declaration of ‘EngineManagementDialog’ with no type
src/enginemanagementdlg.cpp: In function ‘int EngineManagementDialog(EngineConfigurationModel*, QWidget*)’:
src/enginemanagementdlg.cpp:26: error: only constructors take base initializers
src/enginemanagementdlg.cpp:27: error: invalid use of ‘this’ in non-member function
Looks like the meta-object compiler wasn't used to create the moc files. Did you run qmake first in the root directory of Cute Chess? That is, did you follow the instructions in the INSTALL file?
Last edited by ilari on Wed Apr 08, 2009 12:37 pm, edited 1 time in total.