Reckless v0.6.0
codedeliveryservice
released this
21 Mar 23:32
·
95 commits
to main
since this release
Release Notes
Alongside numerous search improvements and adjustments, Reckless now supports the multi-threaded search, implemented using the Lazy SMP approach by sharing the lockless transposition table between search threads (#20, #27).
The activation function has been switched to SCReLU (bee8f74), and other three networks (#14, #26, and #33) have been trained and used during the development process.
Changelog
Time management
- Time adjustment based on distribution of root nodes (#1)
- Cyclic TC improvements (#31)
- Fischer TC improvements (#32)
Late move reductions
History heuristics
- Follow-up move history (#11)
- Counter move history (#12)
- Linear history formula (#13)
- Separate bonus and malus (#21)
- Index by side to move in main history (#23)
Performance optimizations
- Transposition table prefetching (#4)
- Handwritten SIMD for AVX2 instructions (#16)
- Faster repetition detection (#28)
Various search improvements
- Introduce razoring (#3)
- Fail-soft null move pruning (#6)
- Probe transposition table before stand pat (#7)
- Adaptive NMP based on static evaluation (#8)
- Use transposition table score to adjust eval (#10)
- SPSA tuning session (#17)
- Move check extension inside move loop (#19)
- Update aspiration search delta function (#15)
- Reset killer moves for child nodes (#22)
- Avoid using static evaluation when in check (#24)
- Increase research depth when LMR search results are promising (#30)
- Reset killer moves before null move pruning (#34)
Full Changelog: v0.5.0...v0.6.0
Acknowledgments
Special thanks to @AndyGrant for kindly sharing his CPU time and for developing OpenBench, which is actively used in the development process.
Self-Play Benchmark Against v0.5.0
STC 8.0+0.08s
Elo | 155.12 +- 11.83 (95%)
Conf | 8.0+0.08s Threads=1 Hash=32MB
Games | N: 2000 W: 994 L: 156 D: 850
Penta | [8, 53, 272, 427, 240]
LTC 40.0+0.4s
Elo | 157.43 +- 15.49 (95%)
Conf | 40.0+0.40s Threads=1 Hash=128MB
Games | N: 1006 W: 474 L: 47 D: 485
Penta | [0, 20, 145, 229, 109]