I was wondering what would happen to Stockfish's strength if one removed its specific end game knowledge but use the syzygy table bases instead.
I've seen that Uri Blass tried something similar; he removed some end game knowledge -apparently rarely of any use- and tested this version against the dev version of that time. The reduced knowledge Stockfish did well at short time control and I think it was not tested at long time control. Here's the test: http://tests.stockfishchess.org/tests/v ... 3ba5ae705a. So a removal of 87 lines of code showed to be an improvement in terms of elo if I understand well. I know that removing all the end game knowledge would be harmful, but if I use the syzygy table bases I am not so sure about it.
I would like to hear your opinions on this.
For my part, as a non-programmer, I tried to remove all 5 pieces and less end game knowledge in Stockfish's code but I got errors when compiling. I personally have the 5 pieces syzygy EGTB (not the 6 pieces and I've seen 6 and 7 pieces end game specific knowledge in SF's code, I tried not to remove that).
Here's my engame.cpp file:
Code: Select all
http://speedy.sh/EN8d9/endgame.cpp
Here are the errors I got:
Code: Select all
g++ -o stockfish benchmark.o bitbase.o bitboard.o book.o endgame.o evaluate.o main.o material.o misc.o movegen.o movepick.o notation.o pawns.o position.o search.o tbprobe.o thread.o timeman.o tt.o uci.o ucioption.o -lgcov -lpthread -Wall -Wcast-qual -fno-exceptions -fno-rtti -fprofile-generate -ansi -pedantic -Wno-long-long -Wextra -Wshadow -DNDEBUG -O3 -DIS_64BIT -msse -DUSE_BSFQ -flto
/tmp/ccGW1opD.ltrans2.ltrans.o:(.rodata+0x28): undefined reference to `Endgame<(EndgameType)21, ScaleFactor>::operator()(Position const&) const'
/tmp/ccGW1opD.ltrans2.ltrans.o:(.rodata+0xa8): undefined reference to `Endgame<(EndgameType)11, ScaleFactor>::operator()(Position const&) const'
/tmp/ccGW1opD.ltrans2.ltrans.o:(.rodata+0x128): undefined reference to `Endgame<(EndgameType)1, Value>::operator()(Position const&) const'
/tmp/ccGW1opD.ltrans7.ltrans.o:(.rodata+0x248): undefined reference to `Endgame<(EndgameType)13, ScaleFactor>::operator()(Position const&) const'
/tmp/ccGW1opD.ltrans7.ltrans.o:(.rodata+0x2c8): undefined reference to `Endgame<(EndgameType)0, Value>::operator()(Position const&) const'
collect2: error: ld returned 1 exit status
make[2]: *** [stockfish] Error 1
make[2]: Leaving directory `/home/bigtournevisse/Downloads/Stockfish-master/src'
make[1]: *** [gcc-profile-make] Error 2
make[1]: Leaving directory `/home/bigtournevisse/Downloads/Stockfish-master/src'
make: *** [profile-build] Error 2
If anyone is willing to help me to remove successfully all 5 pieces and less end game knowledge (and if that makes any sense, which isn't a given I know), I'm all in.