Releases: peterosterlund2/texel
Releases · peterosterlund2/texel
Texel 1.12
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
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
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
2023-07-30: Texel 1.09 (ELO: +252)
- Implement NNUE evaluation.
Texel 1.08
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
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
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
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
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
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.