Revolver - UCI chess engine
Author: Deshawn Mohan-Smith
The first official release of Revolver, a high-performance UCI-compliant chess engine written in C. This engine is powered by a Pure NNUE (Efficiently Updatable Neural Network) evaluation function, trained entirely on data generated from self-play games.
✨ Key Features
Self-Play Training: The network was trained on a dataset generated from millions of games played against itself, independent of any human theory.
UCI Protocol: Fully compatible with most Chess GUIs.
Search: PVS (Principal Variation Search) with basic pruning techniques (Null Move Pruning, Late Move Reductions, Futility Pruning).
Performance: Highly optimized move generation using 64-bit bitboards, for high search throughput.
Revolver 2.0 what's new?
The next major iteration of Revolver brings massive improvements to the neural network, search algorithm, and low-level optimizations.
Evaluation & NNUE Upgrades
Network V8: The evaluation function has seen continuous upgrades from V4 through V8. The network is now trained on a dataset of over 250 million positions, resulting in a substantially deeper positional understanding.
Accumulator Optimizations: Implemented ply-indexable accumulators and ensured accumulators are stored per thread.
Promotion Handling: Added the AddSub accumulator operation specifically to handle pawn promotions more efficiently.
Training Tweaks: Adjusted network training time to 125ms per position.
Search & Pruning Improvements
Aspiration Windows: Increased the base aspiration window size to 50 and implemented linear widening on the windows.
Check Extensions: Added check extensions to ensure the engine searches deeper in highly forcing, tactical lines.
Performance Optimizations
Compiler Intrinsics: Forced the use of specific compiler intrinsics to prevent inefficient mulhi and mullo instructions during hardware execution, heavily leaning into SIMD vector operations to maximize instruction throughput.
Memory Efficiency: Reduced costly memory accesses when finding the next best move by caching the bestScore.
Bug Fixes, UCI & QoL
Buffer Safety: Fixed a bug to ensure the engine no longer reads input outside of the allocated buffer.
Static Evaluation Check: Added a new UCI command to directly print the static evaluation of the current position for easier debugging and analysis.
Build Automation: The executable name is now dynamically set based on the target Operating System.

Comments
Post a Comment