Skip to content

General

  • The UCI "stop" command now waits for the search to finish before attempting to accept a new command.
  • Added "mirror" command to mirror the board.
  • Fixed a move compression issue which could lead to illegal promotion moves in the PV.
  • Optimised repetition detection.
  • Removed redundant array initialisation in SEE.
  • Square array representation is now packed with bitfields.
  • Removed buckets from pawn hash table.
  • Added prefetching for pawn hash table.
  • Pawn hash table is now thread safe.
  • Pawn hash table is now cleared on ucinewgame.
  • Hash table now avoids overwriting PV entries or entries which have a significantly greater depth.
  • Removed several type constraints to allow the compiler to optimise more freely.
  • Fixed a rare crash with Syzygy tablebases enabled.

Search

  • Completely rewritten search in PV nodes.
  • Lazy SMP replaced with YBWC and PV splitting.
  • Separate PV and zero window search.
  • Removed unsound futility and history pruning.
  • Added SEE pruning.
  • Fixed a bug with incorrect mate scores being stored in the transposition table.
  • Endgame Tablebases are now probed in quiescence.
  • Improved move ordering based on the threat move from null move pruning.
  • Added check to prevent duplicate killers from being stored.
  • More conservative time management for non-repeating time controls.
  • Faster move generation due to a smaller capture buffer size.

Evaluation

  • Added a linear mobility evaluation term.
  • Removed some evaluation terms which appear to be redundant in the middlegame.
  • Blocked pawn evaluation no longer depends on whether or not the file is open.
  • Retuned all values with Texel tuning.
  • Fixed a symmetry issue with king safety evaluation
  • Fixed a symmetry issue with blocked pawn evaluation
  • Optimisations by removing some redundant popcounts.
Rank Name                          Elo     +/-   Games   Score   Draws
   0 v0.4.0                        -28      35     270   45.9%   27.4%
   1 Counter-v3.2-windows-64       207     115      30   76.7%   33.3%
   2 zurichess-neuchatel            83     110      30   61.7%   30.0%
   3 Monolith_1_x64_popcnt          83     110      30   61.7%   30.0%
   4 Fridolin310                    83     110      30   61.7%   30.0%
   5 ruy-1.1.9-windows_sse42        47     116      30   56.7%   20.0%
   6 wyldchess1.51_bmi             -12     128      30   48.3%    3.3%
   7 pawny_1.2.x64.SSE4.2          -23     105      30   46.7%   33.3%
   8 cheese-20-win-64-pop          -35      96      30   45.0%   43.3%
   9 ECE-X3.5                     -161     124      30   28.3%   23.3%

270 of 270 games finished.
Rank Name                          Elo     +/-   Games   Score   Draws
   0 v0.5.0                         80      36     270   61.3%   27.8%
   1 zurichess-neuchatel           207     126      30   76.7%   26.7%
   2 Monolith_1_x64_popcnt          23     110      30   53.3%   26.7%
   3 Counter-v3.2-windows-64        23     110      30   53.3%   26.7%
   4 wyldchess1.51_bmi            -108     111      30   35.0%   30.0%
   5 pawny_1.2.x64.SSE4.2         -120     116      30   33.3%   26.7%
   6 ECE-X3.5                     -176     139      30   26.7%   13.3%
   7 cheese-20-win-64-pop         -176     122      30   26.7%   26.7%
   8 Fridolin310                  -207     103      30   23.3%   40.0%
   9 ruy-1.1.9-windows_sse42      -241     116      30   20.0%   33.3%

270 of 270 games finished.

Hence a very rough estimated gain in strength of around 100 elo.

I've also got a website now: https://topple.dev/about in which I plan to document the development process in the future.

Assets 12

@konsolas konsolas released this Mar 6, 2019 · 9 commits to master since this release

The main new feature in this release is support for syzygy tablebases, which can be enabled by setting the UCI SyzygyPath option.

Upon finding a line into a tablebase position, Topple will use the DTZ tables to produce an upper bound on the mate score, along with a possible mating line. This can be disabled by setting SyzygyResolve to 1.

This version also significantly improves SMP performance, thanks help from TCEC and the twitch chat during division 4 testing.

Assets 12
Mar 1, 2019
Merge pull request #16 from konsolas/better-eval
v0.3.6

@konsolas konsolas released this Mar 1, 2019 · 13 commits to master since this release

Topple v0.3.6 contains several improvements to search.

Search:

  • Less aggressive null move pruning
  • Revised singular extensions
  • Fixed various bugs causing some moves to be searched twice
  • Fixed race condition when evaluating pawn structures on multiple threads
  • Reverted incorrect clamping of draw scores

General:

  • Info outputs now properly comply with the UCI protocol
  • Modernised C++ to prevent memory leaks and potential crashes
  • Implemented multithreaded Texel tuning for future use
  • Reduced memory overhead of multiple threads

Overall strength improvements over v0.3.5 seem to amount to around 40 elo (self play) on a single thread. Gains on multiple threads are likely to be greater due to the bugfixes relating to SMP.

This version has identical strength to the version playing in TCEC S15.

Assets 12

@konsolas konsolas released this Feb 3, 2019 · 23 commits to master since this release

Topple v0.3.5 contains several bugfixes and improvements to search and eval.

Search:

  • Faster move sorting
  • Prefetch before hash table lookups
  • Internal iterative deepening now correctly sets the hash move
  • Mate distance pruning no longer prunes the last move of the reported PV

Time management:

  • "Emergency" time heuristic when eval is going down
  • Topple now moves instantly if there is only one legal move
  • Topple uses more time if the position seems more complicated

Evaluation:

  • Understanding of endgames with bishops of opposite colours

Ponder support:

  • Topple now supports UCI Pondering.
  • Searches only the move suggested by the GUI, and then start the timer when ponderhit is sent.
  • Elo gain of pondering not measured :(

Self-play testing shows an improvement of around 50 elo in self play with pondering disabled and a 40/2 time control, though the actual gains are likely to be less.

I've provided a much greater variety of builds this time, which are now named by their version and architecture.
Architecture names are based on: https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
Please pick the build which most closely matches your CPU architecture.

Assets 10

@konsolas konsolas released this Jan 26, 2019 · 30 commits to master since this release

This release adds several new evaluation parameters, retunes the existing ones, and also makes several improvements to search:

  • Fixed a bug with draw handling that could cause invalid draw scores to be returned in winning/losing positions
  • Moves are compressed to two bytes to be stored in the hash table, so the hash table is now properly aligned.
  • Fixed a rare issue where Topple could crash if it extended past MAX_PLY (seen on Fine#70)
  • New aspiration window algorithm (more aggressive windows)
  • Fixed a PV reporting bug where the PV would be reported twice after an aspiration window research.
  • Less aggressive singular extensions

This version scores +80 elo in self play against v0.3.3, though the actual elo gain will be much lower.
SMP Performance should improve by a larger margin due to the better hash table implementation.

Topple-legacy.exe does not use POPCNT. It runs at around half the speed of Topple-modern.exe on supported hardware, with Topple-ivybridge.exe somewhere in between.

Assets 5

@konsolas konsolas released this Jan 16, 2019 · 42 commits to master since this release

This version makes several changes to search for a decent elo gain:

  • History penalty for moves which did not cause a beta cutoff
  • Optimised LMR calculation
  • Improvements to SMP scaling
  • Redesigned hash table (2 buckets)

One additional evaluation term has been added for the king trapping a rook in a corner in the middlegame.

Gauntlets:

Rank Name                          Elo     +/-   Games   Score   Draws
   0 Topple v0.3.2                  49      44     200   57.0%   19.0%
   1 pawny_1.2.x64.SSE4.2          241     228      20   80.0%   10.0%
   2 Fruit-2-3-1                   191     173      20   75.0%   20.0%
   3 ghost_v3.1-64bit               53     140      20   57.5%   25.0%
   4 danasah680                      0     144      20   50.0%   20.0%
   5 asymptote                     -53     140      20   42.5%   25.0%
   6 orion64-v0.5-bmi2             -89     144      20   37.5%   25.0%
   7 simplex-098-32-ja             -89     144      20   37.5%   25.0%
   8 drosophila-win64             -191     194      20   25.0%   10.0%
   9 GarboChess2-32               -301     161      20   15.0%   30.0%
  10 Teki2_win64                  -382     nan      20   10.0%    0.0%

200 of 200 games finished.
Rank Name                          Elo     +/-   Games   Score   Draws
   0 Topple v0.3.3_dev             100      44     200   64.0%   21.0%
   1 Fruit-2-3-1                   168     175      20   72.5%   15.0%
   2 pawny_1.2.x64.SSE4.2           70     147      20   60.0%   20.0%
   3 ghost_v3.1-64bit              -53     140      20   42.5%   25.0%
   4 GarboChess2-32               -108     152      20   35.0%   20.0%
   5 danasah680                   -127     135      20   32.5%   35.0%
   6 drosophila-win64             -127     149      20   32.5%   25.0%
   7 asymptote                    -168     175      20   27.5%   15.0%
   8 orion64-v0.5-bmi2            -168     157      20   27.5%   25.0%
   9 simplex-098-32-ja            -191     151      20   25.0%   30.0%
  10 Teki2_win64                  -512     nan      20    5.0%    0.0%

200 of 200 games finished.

Hence an estimated elo gain of around 50.

Topple-legacy.exe does not use POPCNT. It runs at around half the speed of Topple-modern.exe on supported hardware, with Topple-ivybridge.exe somewhere in between.

Assets 5

@konsolas konsolas released this Jan 13, 2019 · 48 commits to master since this release

This version makes several changes to evaluation for a hopefully significant elo gain:

Gauntlet with Topple v0.3.1: (previous version)

Rank Name                          Elo     +/-   Games   Score   Draws
   0 Topple v0.3.1                   2      45     200   50.2%   13.5%
   1 gaviota-1.0-win32             436     nan      20   92.5%    5.0%
   2 pawny_1.2.x64.SSE4.2          191     173      20   75.0%   20.0%
   3 GarboChess2-32                168     175      20   72.5%   15.0%
   4 orion64-v0.5-bmi2             127     149      20   67.5%   25.0%
   5 danasah680                    108     165      20   65.0%   10.0%
   6 drosophila-win64              -17     139      20   47.5%   25.0%
   7 simplex-098-32-ja             -89     167      20   37.5%    5.0%
   8 Teki2_win64                  -191     194      20   25.0%   10.0%
   9 chispa403-blend              -382     nan      20   10.0%   10.0%
  10 bikjump                      -512     nan      20    5.0%   10.0%

200 of 200 games finished.

Gauntlet with Topple v0.3.2: (this version)

Rank Name                          Elo     +/-   Games   Score   Draws
   0 Topple v0.3.2_DEV             143      48     200   69.5%   14.0%
   1 pawny_1.2.x64.SSE4.2          191     173      20   75.0%   20.0%
   2 gaviota-1.0-win32             127     163      20   67.5%   15.0%
   3 danasah680                    -35     145      20   45.0%   20.0%
   4 orion64-v0.5-bmi2             -89     155      20   37.5%   15.0%
   5 drosophila-win64             -215     194      20   22.5%   15.0%
   6 Teki2_win64                  -269     297      20   17.5%    5.0%
   7 simplex-098-32-ja            -301     322      20   15.0%   10.0%
   8 GarboChess2-32               -382     252      20   10.0%   20.0%
   9 bikjump                      -436     nan      20    7.5%    5.0%
  10 chispa403-blend              -436     nan      20    7.5%   15.0%

200 of 200 games finished.

Topple-legacy.exe does not use POPCNT. It runs at around half the speed of Topple-modern.exe on supported hardware, with Topple-ivybridge.exe somewhere in between.

Assets 5

@konsolas konsolas released this Jan 9, 2019 · 51 commits to master since this release

The UCI Threads option now functions correctly, and Topple now supports the usage of multiple search threads without crashing. I haven't yet measured the strength gain with multiple threads.

On a single thread, minor modifications to search result in a slight strength increase.

Assets 5

@konsolas konsolas released this Jan 8, 2019 · 52 commits to master since this release

The evaluation has been mostly rewritten for Topple v0.3.0 to allow for the implementation of automated tuning, and of a pawn hash table, which significantly increases strength. Elo gain is around +150 in self play, although the strength increase against other engines appears to be very small.

Topple-legacy.exe does not use POPCNT. It runs at around half the speed of Topple-modern.exe on supported hardware, with Topple-ivybridge.exe somewhere in between.

Assets 5
You can’t perform that action at this time.