Skip to content

@konsolas konsolas released this Jul 12, 2019

Search

  • Added interior node recognisers for material draws
  • King position is now included in the pawn hash table

Evaluation

  • Added additional parameters for detached, paired and backwards pawns.
  • Added linear king-pawn tropism parameters
  • Adjusted king safety and blocked pawn evaluation
  • Retuned all evaluation parameters

This is same version as the one playing in TCEC S16.

Estimated improvements are around 30 elo over 0.7.1 based on self play testing. Actual gains likely to be less.

Assets 14

@konsolas konsolas released this Jun 24, 2019 · 5 commits to master since this release

General

  • Updated CMakeLists.txt
  • Additional validation on promotions when decompressing and checking for legality
  • e.p. moves are now treated as captures
  • Configured alignment for structures which are not shared between threads
  • XOR trick used to improve the performance of the transposition table with many threads
  • hashfull now determined with a sample of the first 4000 entries
  • MAX_PLY increased to 255
  • UCI code now rejects setoption commands while a search is running
  • Removed "Move from Hash" due to regression against weaker engines
  • Transposition table is now locked when aging to prevent crashes between games
  • Topple's move generator now generates promotions separately to other pawns moves and captures
  • Reduced the memory overhead of move generation
  • Fixed compilation error for ToppleTune
  • Added unit tests for move compression and for the new hash entry structure.
  • Fixed a bunch of compilation warnings

Search

  • Promotions are now generated with captures to be sorted first
  • Removed separate generation stages for killer moves (now treated as quiets)
  • Losing captures are now sorted after quiet moves
  • Captures sorted by MVV instead of SEE.
  • Move generator can now skip quiet moves without generating them
  • History heuristic now scales the previous score to prevent high values being reached
  • Lower reduction used in LMR if the evaluation is improving
  • Added static null move pruning
  • History leaf pruning now only allowed at depth 1
  • Added late move pruning
  • Futility pruning and LMR are now enabled for killer moves

Evaluation

  • No change

Based on self play testing, 0.7.1 seems to be around 50 elo stronger than 0.7.0 on a single thread and around 100 elo stronger on 4 threads, though actual increases are likely to be much less.

I'd also like to thank @vshcherbyna for his help with debugging a particular infuriating crash.

Assets 14

@konsolas konsolas released this Jun 9, 2019 · 8 commits to master since this release

General

  • Optimised threefold repetition checking
  • Error messages are now printed to STDERR for easier logging
  • Significantly reduced memory overhead in general
  • Each thread now gets a thread local pawn hash (1MiB/thread)
  • The Move From Hash feature can no longer return empty moves (this was likely the cause of illegal moves in 5-piece Syzygy positions)
  • The Move From Hash feature will no longer be used if the hash move leads to threefold repetition
  • Updated GCC to 9.1.0 (MSYS2)
  • Added a znver2 compile for the upcoming Ryzen 3000 series.

Search

  • Quiescence root nodes are no longer counted twice

Evaluation

  • Moved pawn structure evaluation to a separate file
  • Retuned all parameters
  • Added a parameter for candidate passed pawns
  • Pawn structure evaluation is now performed setwise with bitboards
  • Entries in the pawn hash table have been reduced in size
  • King safety evaluation function now allows for attacks up to size 128

This should finally fix the illegal move issue.

Elo gains over 0.6.1 are reasonable, measured to be around +30 against a small gauntlet of 9 engines.

Assets 14

@konsolas konsolas released this May 31, 2019 · 11 commits to master since this release

General

  • ToppleTune will now compile on linux: cmake . && make ToppleTune
  • Default compilation settings for Topple now include -march=native and -O3

Search

  • Fixed issues relating to illegal moves and converting won positions with 5-piece Syzygy tablebases enabled.
  • Lower LMR reduction in PV nodes.

Evaluation

  • Simplified king piece-square table. The table is now fully symmetric in the middlegame.
  • Simplified isolated pawn evaluation: 24 terms to 4 terms.

The elo gain appears to be very small, given that most changes are just bugfixes and simplifications, but they may be larger for tests which use 5-piece tablebases or which don't use tablebase adjudication.

Assets 13

@konsolas konsolas released this May 14, 2019 · 16 commits to master since this release

General

  • Topple will now compile and run successfully on linux: cmake . && make Topple
  • Compilation now takes place with cmake's default options for release builds
  • The 'x86-64' build has been replaced with a 'legacy' build which just uses GCC's default -march and -mtune settings.

Search

  • Removed YBWC, replaced it with Lazy SMP
  • Slightly improved time management
  • Uses hash table to find a ponder move even if there is only one legal move
  • Implemented "move from hash" which allows Topple to move instantly if there is already an entry of a suitable depth in the hash table.

Evaluation

  • No changes

On a single thread, there is a gain of around +5 elo compared to Topple 0.5.0 in self play.
On 4 threads, the improvement seems to be around +120 elo in self play (vs Topple 0.5.0 on 4 threads), though the actual improvement is likely to be less.

Assets 13

@konsolas konsolas released this Apr 2, 2019 · 21 commits to master since this release

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 · 30 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 · 34 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 · 44 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
You can’t perform that action at this time.