Not logged inRybka Chess Community Forum
Up Topic The Rybka Lounge / Computer Chess / Building Syzygy bases
- - By Brice Allenbrand (***) Date 2013-10-12 07:27 Edited 2013-10-12 07:31
First of all hello everybody :) I read you since 4 years and it's very interesting. I learnt lot of things about chess programs. I like to read different opinions and that's why this forum is important.
Sorry for my bad english, I'm french ;)

Let's go : I want to build the 3-5 tablebases by myself (low bandwith)
So I used the sources here : https://github.com/syzygy1/tb
And GCC 4.8.1 64 bits here : http://mingw-w64.sourceforge.net/

If I do mingw32-make all this is what I get :

Makefile.general:23: .depsr/tbgen.P: No such file or directory
Makefile.general:23: .depsr/tbgenp.P: No such file or directory
Makefile.general:23: .depsr/permute.P: No such file or directory
Makefile.general:23: .depsr/compress.P: No such file or directory
Makefile.general:23: .depsr/threads.P: No such file or directory
Makefile.general:23: .depsr/lz4.P: No such file or directory
Makefile.general:23: .depsr/tbver.P: No such file or directory
Makefile.general:23: .depsr/tbverp.P: No such file or directory
Makefile.general:23: .depsr/decompress.P: No such file or directory
Makefile.general:23: .depsr/checksum.P: No such file or directory
Makefile.general:23: .depsr/city-c.P: No such file or directory
Makefile.general:23: .depsr/tbcheck.P: No such file or directory
Makefile.general:23: .depsr/util.P: No such file or directory
A subdirectory or file -p already exists.
Error occurred while processing: -p.
A subdirectory or file .depsr already exists.
Error occurred while processing: .depsr.
mingw32-make[1]: *** [.depsr/util.P] Error 1
mingw32-make: *** [rtbgen] Error 2

I tryed also some things like gcc -c *.c without success : too much errors (long64/UNKNOWN not defined and so on...)

I suspect I have to install Cygwin or something else but it' too big to download. I live on a small island and we don't have high speed connections.

Is there a more simple way to build the exe without using make ?

BtW should I use Posix thread handling or windows ? There are 2 differents GCC builds.

Thanks.
Parent - - By user923005 (****) Date 2013-10-12 09:30
Are you using the bash shell?
I use the msys bash shell and it builds no problems.

dcorbit@dcorbit /f/project/dcorbit/tb-master/src
$ make
make[1]: Entering directory `/f/project/dcorbit/tb-master/src'
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c tbgen.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/tbgen.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c permute.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/permute.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c compress.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/compress.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c threads.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/threads.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c lz4.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/lz4.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c checksum.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/checksum.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c city-c.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/city-c.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -c util.c -DMAGIC -DUSE_POPCNT -DREGULAR -o objsr/util.o
gcc -pthread -g -O3 -march=corei7 -msse4.2 -pipe -D_GNU_SOURCE -Wall -std=c99 -Wstrict-aliasing=2 -flto -Wno-array-bounds -Wno-maybe-uniniti
alized -o rtbgen objsr/tbgen.o objsr/permute.o objsr/compress.o objsr/threads.o objsr/lz4.o objsr/checksum.o objsr/city-c.o objsr/util.o
make[1]: Leaving directory `/f/project/dcorbit/tb-master/src'

You should see these binary files:
dcorbit@dcorbit /f/project/dcorbit/tb-master/src
$ ls *.exe
rtbgen.exe  rtbgenp.exe  rtbver.exe  rtbverp.exe  tbcheck.exe

Here is my gcc version:
dcorbit@dcorbit /f/project/dcorbit/tb-master/src
$ gcc --version
gcc.exe (rev5, Built by MinGW-W64 project) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If, after further adventures:
1. You can't build it
2. You have a 64 bit operating system
3. You just want to be able to create the files and you do not care if you can build the generation system

then send me a pm and I will send you a copy of the binaries

P.S.
I am at home on the weekends and rather unresponsive during Saturday and Sunday for that reason.
Further, Saturday is my housework/chores day and it will be a strange turn of probability if I even notice a message on Saturday.
Further, Sunday is my Bible/Family day and it will be even stranger if I notice a message on Sunday.
Parent - - By Brice Allenbrand (***) Date 2013-10-12 12:17
Wow, you're a legend :) not Will S. Amiga rulez :)
Before I disturb you in a PM
What application should I install on my W7 to do it the same way you did ?
Parent - - By nebulus (****) Date 2013-10-12 14:52
As Dann already said, MSYS. You may need to edit fstab in etc.
Parent - - By Brice Allenbrand (***) Date 2013-10-13 07:21
:cool: It works ! Thx a lot.
Parent - By Brice Allenbrand (***) Date 2013-10-13 09:39
Found another way without MSYS

gcc -c -DUSE_POPCNT -march=corei7 -msse4.2 -w -Ofast -pipe -D_GNU_SOURCE -std=c99 -DREGULAR -DMAGIC tbgen.c tbgenp.c permute.c compress.c threads.c lz4.c tbver.c tbverp.c decompress.c checksum.c city-c.c tbcheck.c util.c
gcc -s -o rtbgen.exe tbgen.o permute.o compress.o threads.o lz4.o checksum.o city-c.o util.o
gcc -s -o rtbgenp.exe tbgenp.o permute.o compress.o threads.o lz4.o checksum.o city-c.o util.o
gcc -s -o rtbver.exe tbver.o decompress.o threads.o checksum.o city-c.o util.o
gcc -s -o rtbverp tbverp.o decompress.o threads.o checksum.o city-c.o util.o
gcc -s -o tbcheck.exe tbcheck.o threads.o checksum.o city-c.o util.o

Generate 3-4 bases in less than 4' without problems (tbchecked)

rtbgen -s -t 7 KQvK
rtbgen -s -t 7 KRvK
rtbgen -s -t 7 KNvK
rtbgen -s -t 7 KBvK
rtbgenp -s -t 7 KPvK
rtbgen -s -t 7 KBBvK
rtbgen -s -t 7 KBNvK
rtbgen -s -t 7 KBvKB
rtbgen -s -t 7 KBvKN
rtbgen -s -t 7 KNNvK
rtbgen -s -t 7 KNvKN
rtbgen -s -t 7 KQBvK
rtbgen -s -t 7 KQNvK
rtbgen -s -t 7 KQQvK
rtbgen -s -t 7 KQRvK
rtbgen -s -t 7 KQvKB
rtbgen -s -t 7 KQvKN
rtbgen -s -t 7 KQvKQ
rtbgen -s -t 7 KQvKR
rtbgen -s -t 7 KRBvK
rtbgen -s -t 7 KRNvK
rtbgen -s -t 7 KRRvK
rtbgen -s -t 7 KRvKB
rtbgen -s -t 7 KRvKN
rtbgen -s -t 7 KRvKR
rtbgenp -s -t 7 KBPvK
rtbgenp -s -t 7 KBvKP
rtbgenp -s -t 7 KNPvK
rtbgenp -s -t 7 KNvKP
rtbgenp -s -t 7 KQPvK
rtbgenp -s -t 7 KQvKP
rtbgenp -s -t 7 KRPvK
rtbgenp -s -t 7 KRvKP
rtbgenp -s -t 7 KPPvK
rtbgenp -s -t 7 KPvKP
tbcheck K*.rtbw >_CRCerr.txt
tbcheck K*.rtbz >>_CRCerr.txt
find _CRCerr.txt "FAIL"

Had fun ;)
Parent - - By Brice Allenbrand (***) Date 2013-10-13 11:02
After 2 hours, job done :smile: Thanks !

Now a question :
I found : Longest win for black: 92 ply;
1N1q4/1k6/8/8/8/8/4R3/1K6 w - -

But it seems using Nalimov and several other engines there's a #67
It's not the only example I found.

Any idea ?!
Parent - - By Bloodbane (**) Date 2013-10-13 11:38
Nalimov and Gaviota are DTM, Syzygy is DTZ. Therefore they have different mate distances.
Parent - - By Brice Allenbrand (***) Date 2013-10-13 15:28
So Longest win for black: 92 ply; is not right explained...
What happens after 92 ply ?
It means that among all "equal" DTM (134 ply) it is the solution with the highest DTZ (?)

[FEN "1N1q4/1k6/8/8/8/8/4R3/1K6 w - - 0 1"]1. Rb2+ Kc8 2. Kc2 Qc7+ 3. Kd1 Qd6+ 4. Kc2 Qc5+ 5. Kd1 Qd4+ 6. Kc1 Qf4+ 7.
Kc2 Qc4+ 8. Kd1 Qa4+ 9. Kd2 Kd8 10. Kc3 Qa3+ 11. Rb3 Qc5+ 12. Kd2 Qg5+ 13.
Kc3 Qd5 14. Rb4 Ke8 15. Kb2 Qd3 16. Rb3 Qd2+ 17. Ka3 Qa5+ 18. Kb2 Kf7 19.
Rf3+ Ke6 20. Rc3 Qb4+ 21. Rb3 Qe1 22. Rb6+ Kd5 23. Rb7 Qe3 24. Rb4 Qe6 25.
Ka3 Kc5 26. Rb7 Qd6 27. Rb4 Qd3+ 28. Rb3 Qd1 29. Rc3+ Kd4 30. Kb4 Qb1+ 31.
Rb3 Qc2 32. Ka3 Qc5+ 33. Ka2 Qa5+ 34. Kb1 Qe1+ 35. Ka2 Qd2+ 36. Ka3 Kc4 37.
Nc6 Qd6+ 38. Nb4 Qb8 39. Kb2 Qe5+ 40. Ka3 Qa5+ 41. Kb2 Qa4 42. Rg3 Qxb4+
43. Kc2 Qb7 44. Rc3+ Kd4 45. Rd3+ Ke4 46. Rb3 Qc6+ 47. Rc3 Qb5 48. Rh3 Qe2+
49. Kc3 Qe1+ 50. Kc2 Kd4 51. Rd3+ Kc4 52. Rd2 Qe4+ 53. Kd1 Qb1+ 54. Ke2 Kc3
55. Rd1 Qc2+ 56. Ke1 Qg2 57. Rd8 Qg5 58. Rd1 Qg4 59. Rd2 Qg1+ 60. Ke2 Qg2+
61. Ke3 Qxd2+ 62. Kf3 Qd4 63. Kg3 Kd2 64. Kh3 Qg7 65. Kh4 Ke3 66. Kh5 Kf4
67. Kh4 Qg4#
Parent - - By Bloodbane (**) Date 2013-10-13 17:16 Edited 2013-10-13 17:22
Could you post the other line(the one with syzygy tablebases) as well?

Depth to zeroing is the distance to any move that resets the fifty-move counter. So I think there are some funky lines where white gives up material to reset the fifty-move counter which makes syzygybases say 134(or whatever) plies. I'm pretty sure this should be apparent from the PV of the syzygybases.
Parent - - By syzygy (***) Date 2013-10-13 23:44 Edited 2013-10-13 23:52
Except that Stockfish with my adaptations currently does not retrieve a full PV from the tablebases. If it would do that you'd get:
1.Rb2+ Kc8 2.Kc2 Qc7+ 3.Kd1 Qd6+ 4.Kc2 Qc5+ 5.Kd1 Qd4+ 6.Kc1 Qf4+ 7.Kc2 Qc4+ 8.Kd1 Qa4+ 9.Kd2 Kd8 10.Kc3 Qa3+ 11.Rb3 Qc5+ 12.Kd2 Qg5+ 13.Ke2 Qg2+ 14.Kd3 Qd5+ 15.Kc3 Ke7 16.Rb4 Kf7 17.Kb2 Qd3 18.Rb3 Qd2+ 19.Ka3 Qa5+ 20.Kb2 Qc5 21.Kb1 Qf2 22.Rb2 Qd4 23.Rb3 Ke6 24.Ka2 Qc5 25.Rb2 Qd5+ 26.Rb3 Ke5 27.Kb2 Ke4 28.Rc3 Qd2+ 29.Kb3 Qd1+ 30.Kb2 Qe2+ 31.Ka3 Kd4 32.Rb3 Qe7+ 33.Ka2 Qd6 34.Kb2 Qe6 35.Rb7 Kd3 36.Rd7+ Ke2 37.Rb7 Qd5 38.Rb3 Kd1 39.Rb4 Qd3 40.Rb3 Qc4 41.Ka3 Kc2 42.Rb2+ Kc3 43.Rb7 Qc5+ 44.Ka4 Kc4 45.Na6 Qc6+ 46.Rb5 Qxb5+

46 moves = 92 plies

In this position white is losing, so (under DTZ) tries to postpone the first capture by either side as long as possible. Black on the other hand tries to minimise the number of moves until mate or the first capture by either side. (With pawns, it is the distance to the first capture or pawn move that counts.)

Stockfish using my tablebases might be able to sometimes draw this position as white, since black can't afford to make many mistakes.
Parent - - By Brice Allenbrand (***) Date 2013-10-14 04:15 Edited 2013-10-14 04:20
So you should not use "Longest win for black: 92 ply;"
My english is not so strong to propose you something else. :fat:
In your PV with DTZ 92 : how much ply until mate ?

DTZ means DTZ50 ? Syzygy follows FIDE recommandation ? Like a DTZ_FIDE ?

In 1928 FIDE enacted rules that if an endgame theoretically requires more than 50 moves to force checkmate, twice that number of moves were allowed. For instance, in the rook and bishop versus rook endgame, 132 moves were allowed, since it was twice the 66 moves that were thought to be required at that time. (The actual maximal number of moves needed is 59.) In 1952 FIDE revised the law, allowing for 100 moves in such positions but requiring that players agree to an extension for these positions before the first move is made. This was still in effect in 1960. The positions were not specified in the rules, to allow for the possibility of more positions requiring more than 50 moves to be discovered (which is what happened).
....
In 1984 the rule was modified and it became Article 10.9. Now 100 moves were explicitly specified and the positions above were listed in the rule
...
In 1989 the rule (still Article 10.9) was changed to 75 moves

Lots of changes !! See 50 moves rule

I'm not sure if Wikipedia has the "truth" but what happens with syzygy bases if the rules are again changed ?

=> I'm a little bit off topic : perhaps all these informations are mentioned elsewhere ?
Parent - - By Dhanish (***) Date 2013-10-14 06:10

> I'm not sure if Wikipedia has the "truth" but what happens with syzygy bases if the rules are again changed ?


ICCF has decided to change: see http://www.iccf-webchess.com/Message.aspx?message=557: "Table bases are introduced.  50-move rule suspended if TB is entered.  Playing Rules committee along with the Service Director, under oversight of the EB will address the technical issues of implementation."

So, for ICCF players, DTM is necessary.
Parent - - By syzygy (***) Date 2013-10-14 19:50
The 50-move rule has been part of the FIDE rules for many many years now. It is quite clear that the theoretical possibility of a mate in 500 moves is not anymore considered to be a reason to extend the limit. The 50-move rule is here to stay, at least as long as FIDE chess is played by humans.

ICCF is indeed planning to abandon the 50-move rule once the game has reached a TB position. I think this decision is calling for many many problems. Who is going to decide which TBs are to be trusted? Who is going to check that they are correct? ICCF seems to have bowed too early for the technical shortcomings of current tablebases. There is no reason why tablebases could not respect the 50-move rule.

Anyway, this is all not a problem for my tablebases. If the engine wants to ignore the 50-move rule for tablebase positions, it can ignore the 50-move rule when using my tablebases. This is because my tablebases do not store a draw by the 50-move rule as a draw, but as a "cursed win" or "cursed loss". The engine can simply treat "cursed wins" as real wins and "cursed losses" as real losses. Or it can honor the 50-move rule and treat both of them as draws. Or it can bluff and treat cursed wins by the engine as wins and cursed losses as draws.

So ICCF players do not need DTM, but they might (once ICCF has changed the rule) need a special engine option. It is up to the engine developer to implement such an option. My tablebases are ready for it.
Parent - By Loboestepario (****) Date 2013-10-15 00:11

> ICCF is indeed planning to abandon the 50-move rule once the game has reached a TB position. I think this decision is calling for many many problems. Who is going to decide which TBs are to be trusted? Who is going to check that they are correct? ICCF seems to have bowed too early for the technical shortcomings of current tablebases.


ICCF Congress took the political decision of implementing tablebases. The technical team is currently exploring the options but a set of tablebases will eventually be available from the ICCF webserver to TD's and players. We may host them or contract with someone who does. Of course ICCF will only validate claims based on tablebases considered "official".
Parent - - By Dhanish (***) Date 2013-10-15 06:28

> So ICCF players do not need DTM, but they might (once ICCF has changed the rule) need a special engine option. It is up to the engine developer to implement such an option. My tablebases are ready for it.


Glad to know that syzygybases can take care of this problem also, with a suitable engine. Syzygybases seem to be the most advanced tablebase available, thank you for your effort in developing it. Now, I have to download it!! But so far only some special versions of Stockfish can use it.
Parent - - By Brice Allenbrand (***) Date 2013-10-16 13:41 Edited 2013-10-16 13:48
+1 is there a way to find updated sources to build another stockfish ?
Parent - - By nebulus (****) Date 2013-10-16 16:28
Parent - - By Brice Allenbrand (***) Date 2013-10-17 17:09
Compiled : 64 bits POPCOUNT SSE 4.2
Nothing changed only my email added to the info() string for complaints :grin: and some compiler sided optimizations. Need feedback !
https://www.dropbox.com/s/bj3tlu3jhbacexy/stockfish.7z
Regards.
Parent - - By nebulus (****) Date 2013-10-20 15:29
You can compare it to autocompiles at http://abrok.eu/stockfish_syzygy/
Parent - - By syzygy (***) Date 2013-10-20 15:54
The latest compile (Sat Oct 19 11:54:32 2013 +0200) is probably not working correctly (not probing at all).
Parent - - By nebulus (****) Date 2013-10-20 16:19
Thanks for the heads up. But it probably makes more sense to compare it to the same version and this will be October 15 for him, which should be okay. BTW, wouldn't it be more sensible to autocompile from your repository instead of Marco's?
Parent - - By syzygy (***) Date 2013-10-20 17:19
The site seems to be compiling from mine.
I don't know what is more sensible. I cannot guarantee that it will always be up to date with the master Stockfish repository, but I'll try to update at least regularly.
Parent - By nebulus (****) Date 2013-10-20 21:49

> The site seems to be compiling from mine.


I thought I saw the URL to Marco's repository at the top, but it seems you are correct.

> I don't know what is more sensible. I cannot guarantee that it will always be up to date with the master Stockfish repository, but I'll try to update at least regularly.


No pressure. Someone can always set up an up-to-date fork if neither of you have the time to maintain. Many thanks for all your work!
Parent - - By kronsteen (*) Date 2013-10-18 10:20
Planning to abandon the 50-move rule when a TB position is reached should be justified mainly by better availability of TBs ignoring the 50-move rule, as opposed to TBs taking the rule into account. This was clearly the case a few years ago but this is going to change with the syzygy DTZ50+ tablebases as a first major step towards 50-move rule compliant TBs, which should be the way for the future. Be also aware that Distance To Mate and 50-move rule are not mutually exclusive options, it is perfectly possible to build DTM50 tablebases (although it is harder, requires more memory, and is heavier to store than DTM). I'm currently developing 5-men DTM50 tablebases (I hope to generate most interesting ones this year, and the complete set in 2014) and if someone wants to do it 6-men DTM50 should be already achievable with an optimized code running on an high end hardware - a realistic prospect for the next few years, I believe.
Parent - - By Dhanish (***) Date 2013-10-21 01:11

> Planning to abandon the 50-move rule when a TB position is reached should be justified mainly by better availability of TBs ignoring the 50-move rule, as opposed to TBs taking the rule into account.


Since the syzygybases occupy less space, perhaps ICCF can adopt them, there will not be a need to abandon the 50 move rule.

> I'm currently developing 5-men DTM50 tablebases


Can the results (not move length) of DTM50 be different from DTZ50 in any position?
Parent - - By kronsteen (*) Date 2013-10-21 07:06
DTM50 and DTZ50 have the same list of moves that are winning/drawing/losing from any position (this is WDL50 information). The difference is that moves that are optimal in one metric (minimaxing distance to mate / distance to zero) are not necessarily optimal in the other metric.

If the purpose is to be able to claim a win/draw when a TB position is reached, and to have the means to win/draw a position declared as won/drawn, DTZ50 is sufficient for the job, and it is also the best choice as it is the most compact 50-move rule compliant metric. DTM50 is a heavier metric that should be regarded as "absolute perfect play - ultimate knowledge" but not intended for fast access & optimizing computer chess ELO performance.
Parent - By syzygy (***) Date 2013-10-21 23:09
To add a little to what kronsteen wrote, what one would want from DTM50 is finding the fastest mate for any position that is won under the 50-move rule while respecting the 50-move rule.

The complication is that two identical positions with different 50-move counters, even if they can both be won under the 50-move rule, may have different shortest paths to mate.

With DTZ50, the goal is always to find the fastest winning path to a zeroing move (i.e. capture or pawn move). The complication that exists for DTM50 does not exist for DTZ50, because the fastest winning path to a zeroing move is independent of the current 50-move counter.
Parent - - By Dragon Mist (****) Date 2013-10-22 14:44
Am I correct in assuming that, an engine in infinite analysis mode, can make do with Syzygy WDL bases only? (67.8 GB for all 6-men) (it needs only to know the outcome of any 6-men position reached during the search, not the distance to mate, nor any of 3-4-5 as surely some 6-men will precede?)
Parent - - By syzygy (***) Date 2013-10-22 19:48
You are correct.

The 6-men DTZ files (.rtbz) are only accessed when the root position has 6 men or less. (And if the DTZ files are not available, my Stockfish fork will try to do its best with just the WDL files. It should still win the great majority of won tablebase positions.)
Parent - - By Dragon Mist (****) Date 2013-10-22 19:58
Thank you, that saved me a lot of disk space.
Parent - By Dhanish (***) Date 2013-10-24 15:45

> Thank you, that saved me a lot of disk space.


For me, too!
Parent - - By AU (**) Date 2013-10-24 17:34

> nor any of 3-4-5 as surely some 6-men will precede?


Not always. You still must have 3-5 WDL.
Parent - - By syzygy (***) Date 2013-10-24 23:47
Yes, you always need the 3-4-5 WDL for using the 6-men WDL tables. This is because of compression tricks.
Parent - - By Fulcrum2000 (****) Date 2013-10-25 09:45 Edited 2013-10-25 10:26
Ronald, is it possible to install only a subset of (6-men) WDL files like most of us do with Nalimov EGTB, like removing KQQQKN etc to save space, or will this give some undesired side effects?.
Parent - By syzygy (***) Date 2013-10-25 17:39
Removing KQQQvKN.rtbw should not lead to problems. But you'll save just 1.33 MB.

What you should not do is removing e.g. KQvKN if you want KRNvKQ to work. This is because KQvKN can be reached from KRNvKQ through a capture (and because of the way the probing code works).

Since all the 3-4-5-men tables together are small, I would suggest to just keep those if you intend to use any 6-men tables.
Parent - - By Dragon Mist (****) Date 2013-10-25 10:08
Even if I never intend to play through the position till the (bitter) end?? That's weird. So, engine could analyse position using 6 men Syzygy, but could return corrupt info if 3-4-5 men Syzygy is not installed, too??
Parent - - By AU (**) Date 2013-10-25 16:54

> Even if I never intend to play through the position till the (bitter) end?? That's weird. So, engine could analyse position using 6 men Syzygy, but could return corrupt info if 3-4-5 men Syzygy is not installed, too??


Yes. You'll have to put up with another weirdness - Stockfish's mate scores which are in fact won TB positions, so you should start getting used to weirdness now.
Strictly speaking, missing TBs will cause *some* TB accesses to fail, and the engine will fall back on its search in those positions. But that's what you wanted to avoid by installing tablebases, right?
Parent - By syzygy (***) Date 2013-10-25 17:51

> You'll have to put up with another weirdness - Stockfish's mate scores which are in fact won TB positions, so you should start getting used to weirdness now.


My private non-UCI engine reports TB wins as e.g. +Win10, meaning 10 moves until a won tablebase position. Stockfish is reporting the equivalent result as a mate in 60 (50 + 10).

It would be nice if GUI developers could agree on an appropriate UCI extension :-)
Parent - - By syzygy (***) Date 2013-10-25 17:45 Upvotes 1
The probing code looks at the results of captures and the same was done during the compression phase. The idea is as follows: if a 6-men position has a winning capture, it is certain that the position is won. That there is a winning capture can be verified by the probing code by looking at the 5-men tables (which are much smaller and therefore likely cached in memory, so this is fast). In this case the 6-men table does not have to be probed at all, so that it does not matter which value is stored in the location corresponding to that position. The compressor therefore stores the value that leads to best compression.

What does this mean for you: if a relevant 3-4-5 men table is missing when probing a 6-men table, the probe of the 6-men table might fail. This will not crash the program, it will not return corrupt results, but you are not benefiting as much from the 6-men table.
Parent - - By Dragon Mist (****) Date 2013-10-25 19:57
That is The Answer, thanks! So, I need 3-4-5, no dobut. I have a link for torrent of all 3-4-5 files (I presume both dtz and wdl?), size less than 1 GB. Is that ok?
Parent - By syzygy (***) Date 2013-10-25 20:51 Upvotes 1
Somewhat less than 1 GB means it's WDL and DTZ.
Parent - - By Brice Allenbrand (***) Date 2013-10-26 17:03
Parent - By Brice Allenbrand (***) Date 2013-10-27 18:25
4kn2/8/8/8/8/8/8/4KBB1 w - - 0 1


Just for my mind : I don't understand Stockfish evaluation.
Up Topic The Rybka Lounge / Computer Chess / Building Syzygy bases

Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill