Hi,
I'm new here and this is my first post starting with some questions:
1) When I get the newest Stockfish compiles from http://abrok.eu/stockfish/
I do not see the SyzygyPath in the parameter list. I suppose the reason is
line 72 in the source code of ucioption.cpp
o["SyzygyPath"] << Option("<empty>", on_tb_path);
Does this mean that the engine does not see the tablebases at all?
2) When I change "<empty>" to true and compile the tablebase path is
seen and is set. But to what path does it point? Is it the path set by the UCI,
e.g. Chessbase or Fritz?
3) I compile with with cygwin 1.7.34. Is this OK
or should I rather use mingw?
4) My programming skills go back into the last century,
but I have a professional knowledge of (nonlinear) optimization -
which I suppose is not of much use for engine programming.
Nevertheless I would like to take part in the development of Stockfish.
Question: What is the best way to "understand" the sources?
My ICCF ELO > 2450
Thanks for your patience and help.
Dieter Kraft
http://dkraft.userweb.mwn.de
Stockfish compilations and Syzygybases
Moderator: Ras
-
zullil
- Posts: 6442
- Joined: Tue Jan 09, 2007 12:31 am
- Location: PA USA
- Full name: Louis Zulli
Re: Stockfish compilations and Syzygybases
The Linux binary I just grabbed from there certainly includes the Syzygy UCI options:dkraft wrote:Hi,
I'm new here and this is my first post starting with some questions:
1) When I get the newest Stockfish compiles from http://abrok.eu/stockfish/
I do not see the SyzygyPath in the parameter list. I suppose the reason is
line 72 in the source code of ucioption.cpp
o["SyzygyPath"] << Option("<empty>", on_tb_path);
Does this mean that the engine does not see the tablebases at all?
Dieter Kraft
http://dkraft.userweb.mwn.de
Code: Select all
Stockfish 130215 64 POPCNT by Tord Romstad, Marco Costalba and Joona Kiiski
uci
id name Stockfish 130215 64 POPCNT
id author Tord Romstad, Marco Costalba and Joona Kiiski
option name Write Debug Log type check default false
option name Contempt type spin default 0 min -100 max 100
option name Min Split Depth type spin default 0 min 0 max 12
option name Threads type spin default 1 min 1 max 128
option name Hash type spin default 16 min 1 max 1048576
option name Clear Hash type button
option name Ponder type check default true
option name MultiPV type spin default 1 min 1 max 500
option name Skill Level type spin default 20 min 0 max 20
option name Move Overhead type spin default 30 min 0 max 5000
option name Minimum Thinking Time type spin default 20 min 0 max 5000
option name Slow Mover type spin default 80 min 10 max 1000
option name UCI_Chess960 type check default false
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 100
option name Syzygy50MoveRule type check default true
option name SyzygyProbeLimit type spin default 6 min 0 max 6
uciokCode: Select all
setoption name SyzygyPath value /media/tb
info string Found 510 tablebases.-
Sven
- Posts: 4052
- Joined: Thu May 15, 2008 9:57 pm
- Location: Berlin, Germany
- Full name: Sven Schüle
Re: Stockfish compilations and Syzygybases
Hi Dieter,dkraft wrote:Hi,
I'm new here and this is my first post starting with some questions:
1) When I get the newest Stockfish compiles from http://abrok.eu/stockfish/
I do not see the SyzygyPath in the parameter list. I suppose the reason is
line 72 in the source code of ucioption.cpp
o["SyzygyPath"] << Option("<empty>", on_tb_path);
Does this mean that the engine does not see the tablebases at all?
2) When I change "<empty>" to true and compile the tablebase path is
seen and is set. But to what path does it point? Is it the path set by the UCI,
e.g. Chessbase or Fritz?
as for all other UCI options, the line 72 you mention above initializes the value of the SyzygyPath option to its default value which is active as long as the option is not set by the UCI interface. So you should probably avoid to change that line. If you do not see this option listed when running the engine on console mode and typing "uci" then the binary you are running is not based on the latest source code for some reason. If I misunderstood you, and your observation is different from that (e.g. the option is not listed as an available option by some graphical interface), then it is most probably an issue of the graphical interface you are using, although I would consider this to be unlikely (actually I don't know whether graphical interfaces have explicit knowledge of UCI option names and need to be changed to support new options, or are using a generic approach which is what I hope).
Your other question was to what path the option points. I think you can understand that by reading uci.h which includes the definition of class Option. Some instances of that class use the OnChange callback which is implemented through a function pointer that is NULL by default. One example is the Option instance for "SyzygyPath" that is created in the line 72 you mentioned. The OnChange callback will cause an update of the corresponding option value each time the UCI interface wants to set the option.