DoubleCheck 2.3 is out

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

Moderators: hgm, Rebel, chrisw

lucasart
Posts: 3236
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

DoubleCheck 2.3 is out

Post by lucasart »

If anyone is interested in a 2300 elo engine these days :wink:
http://wbec-ridderkerk.nl/html/download.htm

As usual, source code available and licensed under GNU GPL v3. It is still portable and should compile on any plateform (Mac OSX, and generally any UNIX compatible system, also Google Android). The official compiles are 64-bit only, for both Linux and Windows, but Jim Ablett kindly provided other compiles.

If you're not sure which compile is fastest on your computer, or want to be certain that the compile you have is correct, run the program from a command line with an argument (whichever argument you want doesn't matter, so long ar there is at least one)
* It will run a benchmark test, searching several positions in a row at given depth, and return a time and node count
* The node count is a signature that ensures that the compile is correct. The correct node count should be 5784711.
* The time of course depends on your computer. If you want to know, mine does it in about 14.1 seconds.

In terms of changes, there hasn't been very much. I mostly tweaked search reductions and search extensions, as well as introduced a rather "uncommon" way of doing eval pruning and razoring.

I'd be happy if any of the rating lists could test it, because I don't have any precise idea of its level. This is because I almost only do self testing at very fast time control. And this tends to overestimate any improvement.

Enjoy!
Lucas
User avatar
Graham Banks
Posts: 41879
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: DoubleCheck 2.3 is out

Post by Graham Banks »

lucasart wrote:If anyone is interested in a 2300 elo engine these days :wink:
http://wbec-ridderkerk.nl/html/download.htm.........
Of course there will be those interested! :)
Thanks Lucas. Below are some ratings for various versions of DoubleCheck from the CCRL 40/40 list.

40/40

Code: Select all

Rank                Engine                 Elo   +    -   Score  AvOp  Games
1 DoubleCheck 2.1 32-bit               2186  +41  -41  52.3%  -18.1   219
  DoubleCheck 1.3.1 64-bit             2185  +40  -40  47.4%  +21.4   234
  DoubleCheck 1.0 64-bit               1949  +44  -46  23.0% +222.6   239
gbanksnz at gmail.com
zullil
Posts: 6442
Joined: Tue Jan 09, 2007 12:31 am
Location: PA USA
Full name: Louis Zulli

Re: DoubleCheck 2.3 is out

Post by zullil »

lucasart wrote: As usual, source code available and licensed under GNU GPL v3. It is still portable and should compile on any plateform (Mac OSX, and generally any UNIX compatible system, also Google Android).
Enjoy!
Lucas
Compiled on OSX by invoking the following from the command line, after making /DoubleCheck_23/src the working directory:

Code: Select all

gcc -O3 -DPOSIX -I/./*.h ./*.c -std=c99 -o DoubleCheck2.3
lucasart
Posts: 3236
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: DoubleCheck 2.3 is out

Post by lucasart »

zullil wrote:
lucasart wrote: As usual, source code available and licensed under GNU GPL v3. It is still portable and should compile on any plateform (Mac OSX, and generally any UNIX compatible system, also Google Android).
Enjoy!
Lucas
Compiled on OSX by invoking the following from the command line, after making /DoubleCheck_23/src the working directory:

Code: Select all

gcc -O3 -DPOSIX -I/./*.h ./*.c -std=c99 -o DoubleCheck2.3
Good news :)
For a fast executable you also need to put a -DNDEBUG (removes all the assert code that slows down massively), and you can add an -flto (link time optimization)
lucasart
Posts: 3236
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: DoubleCheck 2.3 is out

Post by lucasart »

Graham Banks wrote:
lucasart wrote:If anyone is interested in a 2300 elo engine these days :wink:
http://wbec-ridderkerk.nl/html/download.htm.........
Of course there will be those interested! :)
Thanks Lucas. Below are some ratings for various versions of DoubleCheck from the CCRL 40/40 list.

40/40

Code: Select all

Rank                Engine                 Elo   +    -   Score  AvOp  Games
1 DoubleCheck 2.1 32-bit               2186  +41  -41  52.3%  -18.1   219
  DoubleCheck 1.3.1 64-bit             2185  +40  -40  47.4%  +21.4   234
  DoubleCheck 1.0 64-bit               1949  +44  -46  23.0% +222.6   239
Thanks!
I ran some blitz test in 1min+1sec/move and got the following results:
* DC 2.3 64bit vs DC 1.3.1 64bit: +160 elo after 200 games
* DC 2.3 64bit vs Jazz 5.01 64bit JA: +0 elo after 200 games (score was exactly equal!)
So I can reasonably hope that DC 2.3 64bit will break the 2300 elo "barrier" on CCRL. Although I'm curious to see the results against a varied population of engines.
On a technical level there is no workaround in the code to make the 32bit fast, so you should find the 32-bit versions much slower than the 64-bit ones.
lucasart
Posts: 3236
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: DoubleCheck 2.3 is out

Post by lucasart »

I did some more testing

* DC 2.3 64bit vs Jazz 5.01 64bit: 200 games
* DC 2.3 64bit vs Sungorus 1.4 64bit: 200 games
* Sungorus 1.4 64bit vs Jazz 5.01 64bit: 100 games

Bayeselo rating table

Code: Select all

Rank Name                     Elo    +    - games score oppo. draws 
   1 Sungorus 1.4               6   23   23   300   51%    -3   21% 
   2 DoubleCheck 2.3           -3   20   20   400   50%     1   22% 
   3 Jazz v5.01 JA (x86_64)    -3   23   23   300   50%     0   26% 
So the three engines are fairly equal.

PS: all games are played in 1min+1sec/move, on my laptop. It's a recent laptop, quite fast: it runs the DoubleCheck benchmark test in about 7 sec.
User avatar
Graham Banks
Posts: 41879
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: DoubleCheck 2.3 is out

Post by Graham Banks »

lucasart wrote:I did some more testing

* DC 2.3 64bit vs Jazz 5.01 64bit: 200 games
* DC 2.3 64bit vs Sungorus 1.4 64bit: 200 games
* Sungorus 1.4 64bit vs Jazz 5.01 64bit: 100 games

Bayeselo rating table

Code: Select all

Rank Name                     Elo    +    - games score oppo. draws 
   1 Sungorus 1.4               6   23   23   300   51%    -3   21% 
   2 DoubleCheck 2.3           -3   20   20   400   50%     1   22% 
   3 Jazz v5.01 JA (x86_64)    -3   23   23   300   50%     0   26% 
So the three engines are fairly equal.

PS: all games are played in 1min+1sec/move, on my laptop. It's a recent laptop, quite fast: it runs the DoubleCheck benchmark test in about 7 sec.
Looks promising. 8-)
gbanksnz at gmail.com
lucasart
Posts: 3236
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: DoubleCheck 2.3 is out

Post by lucasart »

Graham Banks wrote:
lucasart wrote:I did some more testing

* DC 2.3 64bit vs Jazz 5.01 64bit: 200 games
* DC 2.3 64bit vs Sungorus 1.4 64bit: 200 games
* Sungorus 1.4 64bit vs Jazz 5.01 64bit: 100 games

Bayeselo rating table

Code: Select all

Rank Name                     Elo    +    - games score oppo. draws 
   1 Sungorus 1.4               6   23   23   300   51%    -3   21% 
   2 DoubleCheck 2.3           -3   20   20   400   50%     1   22% 
   3 Jazz v5.01 JA (x86_64)    -3   23   23   300   50%     0   26% 
So the three engines are fairly equal.

PS: all games are played in 1min+1sec/move, on my laptop. It's a recent laptop, quite fast: it runs the DoubleCheck benchmark test in about 7 sec.
Looks promising. 8-)
Added Pawny 0.3.1 to the list. I've just downloaded and compiled BayesElo, and learning about it, fascinating stuff! I'm starting to do a little rating list actually. Testing conditions are:
* performance.bin by Marc Lacrosse, limited to depth 10 (20 half moves)
* 1min+1sec/move: longer time control = better games. But for a given amount of CPU time, it's certainly better to play 10 times more games than 10 times longer games. There's little evidence supporting the idea that longer games give more accurate ratings. On the other hand ridiculous time controls (line 10sec+0.1sec/move or so) may lead to many time losses or engines having issues finishing the shallowest depth in some situations. 1+1 seems a good compromise!
* no resign or adjudication. These weak programs are far to buggy for this feature to be trustworthy (they might not be able to win a dead won endgame, or give large scores when it's a draw etc.)
* Only engines that have a Linux version, that actually *works* (XBoard or UCI). And only open source ones. This is a good way to drastically reduce the list !
* Only 64 bit engines: we're almost in 2012 for god sake, who uses a 32 bit CPU these days ? (except for these windows users with 32bit Windows XP running on a 64 bit machine...)
* And, of course, elo are computed by BayesElo. As a statistician myself, I don't believe in the EloStat method.
* ELO are meaningless as such, only an ELO difference means anything. So an arbitrary offset is put, but really it doesn't matter. For now, I just put Sungorus 1.4 at 2402 ELO, but it may change depending on my mood :)

Code: Select all

Rank Name                     Elo    +    - games score oppo. draws 
   1 Pawny 0.3.1 (x64)       2518   34   33   200   66%  2397   17% 
   2 Sungorus 1.4            2402   24   24   350   48%  2413   20% 
   3 Jazz v5.01 JA (x86_64)  2400   24   24   350   48%  2414   25% 
   4 DoubleCheck 2.3         2394   20   20   500   46%  2424   21% 
Running Beowulf at the moment: 100 games against DC 2.3 50 games against other engines.

Lucas
User avatar
abik
Posts: 821
Joined: Fri Dec 01, 2006 10:46 pm
Location: Mountain View, CA, USA
Full name: Aart Bik

Re: DoubleCheck 2.3 is out

Post by abik »

lucasart wrote:If anyone is interested in a 2300 elo engine these days :wink:
Congrats on the stronger new release. Just like Jim, I also compiled your engine for ARM, and put the binary on UCI and XBoard engines for Andrdoid.

Results of a quick 1-second per move tournament on a Nexus S, played from both sides of all lines in the Noomen test suite 2012 (games available on request):

Code: Select all

                     1         2          3                                                            
1   DoubleCheck 2.3      *     36.5-23.5  39.5-20.5  76.0/120
2   DoubleCheck 2.0  23.5-36.5     *      35.5-24.5  59.0/120
3   DoubleCheck 1.3  20.5-39.5 24.5-35.5      *      45.0/120
ZirconiumX
Posts: 1334
Joined: Sun Jul 17, 2011 11:14 am

Re: DoubleCheck 2.3 is out

Post by ZirconiumX »

Just get a few warnings on OSX with an ancient gcc (4.0.1):

Code: Select all

$ gcc -O3 -DPOSIX -DNDEBUG -I/./*.h ./*.c -std=c99 -o doublecheck
./search.c:49: warning: 'adjust_tt_score' declared inline after being called
./search.c:49: warning: previous declaration of 'adjust_tt_score' was here
./search.c:48: warning: 'can_return_tt' declared inline after being called
./search.c:48: warning: previous declaration of 'can_return_tt' was here
./search.c:47: warning: 'update_killers' declared inline after being called
./search.c:47: warning: previous declaration of 'update_killers' was here
Nothing major I don't think.

Also, do I dare see someone breaking the UCI rules?!
UCI specs wrote: Move format:
------------

The move format is in long algebraic notation.
A nullmove from the Engine to the GUI should be send as 0000.
Examples: e2e4, e7e5, e1g1 (white short castling), e7e8q (for promotion)
DC output wrote: info score cp 83 depth 11 nodes 246624 time 1720 pv Rc5d5 Rd1xd5 e6xd5 Nc4b2 d5d4 Qa1c1 d4xe3 f2xe3 Bb7e4
Tut tut, you should be ashamed of yourself.

Seriously though, brilliant engine, it is lightning fast!

Matthew:out
Some believe in the almighty dollar.

I believe in the almighty printf statement.