New 6-piece tablebases

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
Kirill Kryukov
Posts: 492
Joined: Sun Mar 19, 2006 4:12 am
Full name: Kirill Kryukov

Re: New 6-piece tablebases

Post by Kirill Kryukov »

Vinvin wrote:
phenri wrote: I made a mirror of sbases345.tar.bz2

Size 949616772 B
Nalimov 3-4-5 pieces is around 7 GB, does that means this new format is 1/7 the size of Nalimov TB ? :shock:
Yes.
Vinvin
Posts: 5236
Joined: Thu Mar 09, 2006 9:40 am
Full name: Vincent Lejeune

Re: New 6-piece tablebases

Post by Vinvin »

Kirill Kryukov wrote:
Vinvin wrote:
phenri wrote: I made a mirror of sbases345.tar.bz2

Size 949616772 B
Nalimov 3-4-5 pieces is around 7 GB, does that means this new format is 1/7 the size of Nalimov TB ? :shock:
Yes.
Really interesting ... which engines use this format ?
User avatar
jshriver
Posts: 1354
Joined: Wed Mar 08, 2006 9:41 pm
Location: Morgantown, WV, USA

Re: New 6-piece tablebases

Post by jshriver »

Vinvin wrote: Really interesting ... which engines use this format ?
From what I've read, it's open to anyone to use. The author uses it in his own engine, and also created probing code that fits within stockfish's codebase.
User avatar
gbtami
Posts: 389
Joined: Wed Sep 26, 2012 1:29 pm
Location: Hungary

Re: New 6-piece tablebases

Post by gbtami »

Just joined to the party. Thanks Joshua!
User avatar
RJN
Posts: 303
Joined: Fri Jun 21, 2013 5:18 am
Location: Orion Spiral Arm

Re: New 6-piece tablebases

Post by RJN »

Kirill Kryukov wrote:
syzygy wrote:I've updated to the latest sources and created a tag "sf_4_tb".
To get Stockfish 4 with my changes the following should work:

Code: Select all

$ git clone https://github.com/syzygy1/Stockfish.git
$ cd Stockfish
$ git checkout sf_4_tb
or just use this link: https://github.com/syzygy1/Stockfish/ar ... f_4_tb.zip

Note that this is unsupported.
Great, thanks a lot! I will give it a try in a day or two.
Does anyone have a 64 bit Windows compiled (recent) Stockfish available that will work with these 6-piece tablebases? It would be much appreciated if someone can point me to a link, Thanks!
User avatar
Kirill Kryukov
Posts: 492
Joined: Sun Mar 19, 2006 4:12 am
Full name: Kirill Kryukov

Re: New 6-piece tablebases

Post by Kirill Kryukov »

RJN wrote:
Kirill Kryukov wrote:
syzygy wrote:I've updated to the latest sources and created a tag "sf_4_tb".
To get Stockfish 4 with my changes the following should work:

Code: Select all

$ git clone https://github.com/syzygy1/Stockfish.git
$ cd Stockfish
$ git checkout sf_4_tb
or just use this link: https://github.com/syzygy1/Stockfish/ar ... f_4_tb.zip

Note that this is unsupported.
Great, thanks a lot! I will give it a try in a day or two.
Does anyone have a 64 bit Windows compiled (recent) Stockfish available that will work with these 6-piece tablebases? It would be much appreciated if someone can point me to a link, Thanks!
I uploaded my compile here. Untested, built from Ronald's sf_4_tb.zip quoted above.
User avatar
RJN
Posts: 303
Joined: Fri Jun 21, 2013 5:18 am
Location: Orion Spiral Arm

Re: New 6-piece tablebases

Post by RJN »

Hi Kirill:

Thanks for the link, but I have a question. I did not see anywhere to set the path to the syzygy TBs in this compile. There is a parameter to set the probe, but how does one specify where the TBs are located?

I did get it to work (get TB hits) by putting the executable in the same folder as the 5 piece bases, but if I recall, the SF3 version with syzygy bases had parameters in the config to set the paths.

Having the executable in the TB directory is no big deal for 5 piece, but once I get the 6 piece downloaded, I plan to have the WDL files on SSD, and DTZ files on a HDD, as recommended by Ronald de Man.

I'm not complaining, but just thought I would point this out FYI. Thanks for your time.


Here is my configuration:

(I changed the engine name, for clarity)

[Stockfish-4-STB-6]
Write Debug Log=false
Write Search Log=false
Search Log Filename=SearchLog.txt
Book File=book.bin
Best Book Move=false
Contempt Factor=0
Mobility (Midgame)=100
Mobility (Endgame)=100
Pawn Structure (Midgame)=100
Pawn Structure (Endgame)=100
Passed Pawns (Midgame)=100
Passed Pawns (Endgame)=100
Space=100
Aggressiveness=100
Cowardice=100
Min Split Depth=0
Max Threads per Split Point=5
Threads=2
Idle Threads Sleep=true
Hash=1024
Ponder=false
OwnBook=false
MultiPV=1
Skill Level=20
Emergency Move Horizon=40
Emergency Base Time=400
Emergency Move Time=70
Minimum Thinking Time=20
Slow Mover=100
UCI_Chess960=false
Probe Syzygybases=5
User avatar
Kirill Kryukov
Posts: 492
Joined: Sun Mar 19, 2006 4:12 am
Full name: Kirill Kryukov

Re: New 6-piece tablebases

Post by Kirill Kryukov »

RJN wrote:Hi Kirill:

Thanks for the link, but I have a question. I did not see anywhere to set the path to the syzygy TBs in this compile. There is a parameter to set the probe, but how does one specify where the TBs are located?
I think you set the path in environment variables RTBWDIR and RTBZDIR, as mentioned on Ronald's syzygybases page.

One thing that's not clear to me (I haven't tested Stockfish yet) is - if the probing code can search multiple directories. In the context of torrent sharing of the files it's convenient to store 3-4-5-piece files in one directory and 6-piece files in another directory. If probing code expects all same metric files in a single directory, then adding multiple directory access would be one obvious feature request to Ronald.
syzygy
Posts: 5646
Joined: Tue Feb 28, 2012 11:56 pm

Re: New 6-piece tablebases

Post by syzygy »

Kirill Kryukov wrote:One thing that's not clear to me (I haven't tested Stockfish yet) is - if the probing code can search multiple directories. In the context of torrent sharing of the files it's convenient to store 3-4-5-piece files in one directory and 6-piece files in another directory. If probing code expects all same metric files in a single directory, then adding multiple directory access would be one obvious feature request to Ronald.
Currently it only searches one directory for .rtbw files (RTBWDIR variable) and one directory for .rtbz files (RTBZDIR variable).

It wouldn't be difficult to separate 3-4-5 and 6 into different directories, each with its own environment variable. For maximum flexibilty, it would also be possible to let the user specify multiple paths in a single environment variable, where the probing code would look in all of them for any file.

Even better is to replace environment variables with UCI options. But what would be the expected behaviour if you change the path when the engine has already started? Preferably I would let the engine only look at these paths once during initialisation. Would this be OK or would it confuse users?

Any proposed name or names for these option(s)?
User avatar
Kirill Kryukov
Posts: 492
Joined: Sun Mar 19, 2006 4:12 am
Full name: Kirill Kryukov

Re: New 6-piece tablebases

Post by Kirill Kryukov »

syzygy wrote:
Kirill Kryukov wrote:One thing that's not clear to me (I haven't tested Stockfish yet) is - if the probing code can search multiple directories. In the context of torrent sharing of the files it's convenient to store 3-4-5-piece files in one directory and 6-piece files in another directory. If probing code expects all same metric files in a single directory, then adding multiple directory access would be one obvious feature request to Ronald.
Currently it only searches one directory for .rtbw files (RTBWDIR variable) and one directory for .rtbz files (RTBZDIR variable).

It wouldn't be difficult to separate 3-4-5 and 6 into different directories, each with its own environment variable. For maximum flexibilty, it would also be possible to let the user specify multiple paths in a single environment variable, where the probing code would look in all of them for any file.

Even better is to replace environment variables with UCI options.
Yes, multiple paths in UCI options looks like the best solution. This would allow running multiple instances of the engine with different settings without altering the environment. For example such different instances could be included in a tournament.
syzygy wrote:But what would be the expected behaviour if you change the path when the engine has already started? Preferably I would let the engine only look at these paths once during initialisation. Would this be OK or would it confuse users?
I think the expected behaviour should be to start using only tablebases available in the new path. I think initializing only once is acceptable compromise, and still better than environment variables. However why not simply re-initialize the probing code entirely each time the path changes?
syzygy wrote:Any proposed name or names for these option(s)?
Something like SyzygyWDLPath and SyzygyDTZPath perhaps? Up to you really.