Skip to content

Releases: peterosterlund2/texel

Texel 1.12

05 Jan 09:31
Compare
Choose a tag to compare

2025-01-05: Texel 1.12 (ELO: +85)

Neural network improvements:

  • Speed up matrix multiplication for AVX-512.
  • New network based on new training data.
  • Use 4 "heads" (all NN layers except the first) for evaluation. The active head depends on the number of pieces on the board.
  • Increase NN layer 1 output size from 256 to 384.

Tablebases:

  • Measure thinking time more accurately. Useful when TB files are on mechanical disks.
  • Better handling of DTZ scores in search.
  • Avoid expensive (wrong side to move) DTZ probes in search.
  • Add UCI parameter to control required search depth for DTZ probes.
  • Measure time required to perform a TB probe instead of guessing. This avoids time losses in fast games when TB files are on mechanical disks.
  • Allow RTB WDL probes in some cases even if hmc > 0.
  • Change TB swindle depth from 16 to "15+minProbeDepth", to avoid slowdown in late middlegame/early endgame when TB files are on mechanical disks.

Search:

  • Implement the counter move heuristic.
  • Implement multi-cut pruning based on singular search score.
  • Adjust singular extension search parameters.
  • Allow both extension and reduction in the same search node.
  • Remove no longer useful "recapture" and "going into pawn endgame" extensions.
  • Reduce aspiration window size.

Other:

  • Use multiple threads to initialize the transposition table.
  • Better handling of mate scores in the transposition table.
  • Fix handling of empty strings in UCI string options.

Texel 1.11

12 Jan 20:48
Compare
Choose a tag to compare

2024-01-12: Texel 1.11 (ELO: +63)

Neural network improvements:

  • Fewer non-incremental updates of the first layer state.
  • Implement quantization aware training.
  • Better GPU utilization by using separate data loading threads.
  • Efficiently handle training data that is too large to fit in RAM.
  • Train a new network based on new training data evaluated by Texel 1.10.
  • Optionally use AVX-512 instructions.

Other:

  • Re-calibrate UCI_Elo for NNUE.
  • Fix a null-move verification problem.
  • Update GoogleTest code to version 1.14 to fix warnings when using new CMake versions.
  • Add state to the Square class, i.e. make it contain the square number.

Texel 1.10

25 Sep 12:49
Compare
Choose a tag to compare

2023-09-25: Texel 1.10 (ELO: +173)

Speed up evaluation:

  • More handwritten code using compiler intrinsics.
  • Switch from gcc to clang for Windows compiles.
  • Cache-line align data for more efficient SIMD load/store.
  • Avoid "horizontal adds" in matrix multiplication by re-arranging weight data
    ahead of time.

Better neural network:

  • Train a new network based on new training data evaluated by Texel 1.09.
  • Use both search scores and game results when generating training data.
  • Compute quantized validation error during training.
  • Set unused layer 1 weights to 0 during training, to reduce compressed network
    size.
  • Print weight/bias statistics during net quantization, to make it possible to
    see if quantization parameters are reasonable.
  • Permute the quantized net for more efficient sparse handling of the outputs
    from the first layer.

Compilation fixes:

  • Fix Visual Studio debug compilation.
  • Fix cygwin/msys2 compilation problems.
  • Better SIMD support for 32-bit CPUs.

Other:

  • Add source code for "syncengine" program.
  • Allow MultiPV mode also when playing games.
  • Re-introduce evaluation score reduction when the half-move clock is large.
    No strength improvement but avoids shuffling moves in some situations.

Texel 1.09

30 Jul 10:29
Compare
Choose a tag to compare

2023-07-30: Texel 1.09 (ELO: +252)

  • Implement NNUE evaluation.

Texel 1.08

10 Jun 14:51
Compare
Choose a tag to compare

2023-06-10: Texel 1.08

New features:

  • Allow arbitrary hash table sizes up to 1TiB of memory.
  • Add "contempt" UCI parameter.
  • Add automatic contempt depending on opponent name.
  • Add support for 7 man syzygy tablebases.
  • Add "runcmd" Windows program. Useful for GUIs that don't allow specifying command line arguments to the engine.

Bug fixes:

  • Fix crash in Windows NUMA/CPU discovery code.
  • Fixed rare crash when running in cluster mode.
  • Changed default "ponder" UCI option value to false.

Time management:

  • More dynamic time management.
  • Better time allocation for ponder on games.

Search:

  • Use depth-dependent singular extension threshold.
  • Add tempo bonus.

Reduced strength:

  • Add MaxNPS UCI parameter.
  • Make reduced strength work for Threads > 1.
  • Add UCI_LimitStrength and UCI_Elo support, range -625 - 2540.

Infrastructure:

  • Use CMake instead of a handwritten Makefile.
  • Use Google Test framework instead of CUTE.

texelutil:

  • Use C++ threads instead of OpenMP.
  • Build texelutil with reduced functionality even if Armadillo and GSL libraries are not found.
  • Add a reverse move generator, "texelutil revmoves".
  • Improve "texelutil proofgame" for random positions.
  • Add "texelutil rndfen" to generate random positions.

Documentation:

  • Document how to estimate number of legal chess positions.
  • Document the Texel tablebase probing algorithm.

Texel 1.07

10 Aug 07:13
Compare
Choose a tag to compare

2017-09-30: Texel 1.07 (ELO: +35)

Search:

  • More aggressive LMR in expected CUT nodes.
  • Don't use history and killer heuristics for captures.
  • Prevent q-search explosion in pathological cases.
  • Allow LMR for checking moves with negative SEE value.
  • Don't do internal iterative deepening when in check.
  • Don't do razoring when in check.
  • Don't check extend SEE<0 moves at depth<=3.
  • More LMR/LMP reduction if the evaluation score is worse than it was two plies
    ago. Idea from stockfish.
  • More aggressive reverse futility parameters.
  • In hash replacement, prefer a deep bound over a shallow exact entry if the
    depth difference is larger than 3.
  • Use history score to control LMR reductions.

Parallel search:

  • Parallel search algorithm changed to hybrid lazy SMP / ABDADA.
  • Removed code that on NUMA avoids probing the TT at depth 0 for nodes > 0.

Evaluation:

  • Removed the piece trade bonus.
  • Implemented fortress detection for KQvsKRM+pawns endgames.
  • Added endgame correction for KQKNNNN which is generally won by the knights.

Speed:

  • Support for large and huge page allocations for the transposition table.
  • Added alpha/beta pruning to the SEE function.
  • Added support for sliding move generation using the PEXT BMI2 machine code
    instruction.

Other:

  • Include "hashfull" information in UCI output.
  • Added UCI option to control whether the transposition table is aged when
    starting a new search in analysis mode.

Texel 1.06

10 Aug 07:13
Compare
Choose a tag to compare

2016-07-10: Texel 1.06 (ELO: +56)

Search:

  • Don't use ply-2 killers for move ordering.
  • Be more restrictive when extending losing (SEE<0) checks.
  • Don't do check extensions for moves that are reduced by LMR.
  • Don't do singular extensions if the unextended score is a mate score.
  • Don't do LMR for the first 2 pseudo-legal moves.
  • More aggressive LMR.
  • More aggressive null move searches.
  • Don't resolve a known loss score bound if there are other moves that are
    potentially not losing.

Parallel search:

  • Allow a helper thread that fails high to interrupt the master thread.
  • Changed MIN_SPLIT_DEPTH from 10 to 7 to make better use of multiple threads in
    short time control games.
  • Changed maximum number of search threads to 512.
  • Added support for windows NUMA systems having more than 64 cores.

Evaluation:

  • Evaluation term to encourage "pawn breaks".
  • Bonus for "latent" pawn attacks on enemy minor and major pieces.
  • Bonus for safe queen contact checks.
  • Only treat pawns on rank 2 and 3 as backwards pawns.
  • King safety bonus for pieces (except bishops) on the same side of the board as
    the king.
  • Parameter tuning.

Endgame:

  • More patterns for fortress detection in bishop endings.
  • On-demand tablebase generation for 4-men pawn-less positions.
  • Knowledge about KRKBNN endgame, which is generally a draw.
  • Better evaluation of KRBNKRB endgame.
  • Larger evaluation score in KRRMKRR endgames
  • Improved 50 move draw handling for TB probes.

Speed:

  • Reduced TB probe overhead.
  • Implemented a small (512KB) per-thread evaluation hash table.
  • Removed support for fractional depth.
  • Made the transposition table 4-way set associative.

Other:

  • Removed "64-bit" from the engine name. 64 bit is now considered standard.
  • UCI option to disable null moves.
  • Made "BufferTime" a UCI parameter to control time handling safety margin.
  • Don't start a new search iteration if it is unlikely that it can finish before
    the allocated thinking time is up.
  • In analysis mode, don't age transposition table entries when starting a new
    search.

Texel 1.05

10 Aug 07:12
Compare
Choose a tag to compare

2015-01-24: Texel 1.05 (ELO: +57)

  • Added support for Gaviota and Syzygy tablebases.
  • Improved the built in opening book.
  • Implemented UCI option "Clear Hash".
  • Optimization for NUMA hardware.
  • Earlier transposition table prefetch.
  • Added evaluation of "semi-trapped" rooks.
  • Removed the guarded passed pawn evaluation.
  • Don't rely on the transposition table to communicate search results from helper to master thread.
  • Use more time early in sudden death and increment games.
  • Smaller delta in aspiration window loop.
  • Optimized history heuristic update formula.
  • Improved fortress detection for bishop and pawns vs pawns.
  • Detection of "16 pawn fortress positions".
  • Added bonus for pieces protected by pawns.
  • Fixed incorrect draw scores in multipv mode.
  • Made piece square tables have left/right asymmetry.
  • Detection of KQKRP fortress positions.
  • Disabled LMP in PV nodes.
  • Only do check extension for negative SEE moves if the remaining depth is small.
  • Implemented singular extensions.
  • More aggressive LMR.
  • Fixed makefile to make multi-threaded search work for Android.

Texel 1.04

10 Aug 07:11
Compare
Choose a tag to compare

2014-05-29: Texel 1.04 (ELO: +72)

  • Added separate queen piece square tables for middle game and endgame.
  • Added recognition of some drawn endgames involving bishops and pawns.
  • Added evaluation corrections for QvsRR, QvsRM, RvsM, RvsMM.
  • Made bishop pair bonus depend on number of opponent minor pieces.
  • Added more evaluation terms for pawns (own and opponent) in front of the king.
  • Added evaluation terms for king assisting passed pawns.
  • Made king endgame piece square table contain 32 parameters.
  • Made the isolated and doubled pawn penalties file dependent.
  • Added file dependent passed pawn bonus.
  • Only use the protected passed pawn bonus when the non-pawn material is balanced.
  • Improved knight mobility evaluation.
  • Added bonus for a piece blocking an opponent passed pawn.
  • Added non-linear king safety and tuned other king safety parameters.
  • Improved KRKP evaluation.
  • Added evaluation of connected passed pawns.
  • Added drawishness factor to rook endgame evaluation, based on white/black pawn asymmetry.
  • Added endgame corrections for KRPKM.
  • Added square-dependent bonus for pawns protecting/attacking other pawns.
  • Added bonus for minor pieces protecting the king.
  • Added penalty for semi-backward pawns.
  • Reduce evaluation score when the halfmove clock is large.
  • Added bonus for rook behind passed pawn.
  • Optimized razor margins and delta pruning margin using CLOP.
  • Improved the built in opening book.

Texel 1.03

10 Aug 07:10
Compare
Choose a tag to compare

2014-01-19: Texel 1.03 (ELO: +112)

  • Multi-threaded (SMP) search.
  • Remove moves before the last zeroing move from the repetition history list before starting search.
  • Removed bogus transposition table store in Search::iterativeDeepening().
  • Disable aspiration window logic when searching for a faster mate.
  • Added null move verification search.
  • Prefetch entries from the main transposition table.
  • Bonus for candidate passed pawns.
  • Skip move ordering after enough moves to trigger LMP have been searched.
  • Implemented pawn storm bonus for opposite castling positions.
  • Removed the Botvinnik-Markoff extension.
  • More aggressive LMR.
  • Added knowledge for KBpKB, KNpKB, KBpKN and KNpK endgames.
  • Store endgame flag in material hash table.
  • Optimized lots of evaluation function parameters.
  • More consistent evaluation of different classes of pawnless endgames. KQK, KRK, KQKM, KBBK, KBNK, KQKR, KQKMM, KMMKM (M = B or N).
  • MultiPV-support.
  • Mate distance pruning.
  • Evaluation correction for 7 knights vs 3 queens.
  • Display engine evaluation using "info string" when starting search in analysis mode.
  • Changed internal parameter handling to make it easier to switch between UCI parameters and compile-time constants.