Heimdall - UCI chess engine written in Nim.
Author: Mattia Giambirtone
More info
Heimdall is available on Lichess under its old name (Nimfish), feel free to challenge it! I try to keep the engine running on there always up to date with the changes on the master branch
More info
Heimdall is available on Lichess under its old name (Nimfish), feel free to challenge it! I try to keep the engine running on there always up to date with the changes on the master branch
v.1.3:
What changed
SEE has been completely stolen from Stormphrax ahem, I mean rewritten, to use a faster, more efficient iterative algorithm
Heimdall now caches accumulator refreshes (aka "finny tables")
A healthy dose of LTC SPSA tuning
LMR is increased if the current move is quiet while the hash move is a capture
The network architecture has changed: the L1 is now 1536 neurons long instead of 1280
Heimdall's networks now use merged king planes, allowing for a nice 8% FT size reduction at no cost
Futility pruning now uses base LMR depth for its limit condition
History LMR divisors have been separated (and tuned) for noisy vs quiet moves
A lot of cleanup in subcommand parsing/handling
Various cosmetic fixes and addition to the pretty logs
Heimdall can now generate standard chess data (the new network was trained with a mix of standard and dfrc data)
Added a new, experimental data filtering tool
Node TM was actually fixed this time (for realsies tho)
The TT now only stores partial zobrist keys
NMP now features verification search
MAX_DEPTH is now respected exactly in search (it was off by one)
Quiescence search now stores a lower bound score to the TT before stand-pat cutoffs
NMP now uses TT information in its condition
Various minor fixes to many parts of the codebase
Improving is now used in RFP
NMP reduction is now increased based on static eval and beta
Strength
Wow, that was a lot huh? Elo is getting harder and harder to get, but we still have some nice gains here.
Since it was requested to me by the author of the ipmanchess list, I will now be providing both STC and LTC progtests played with a balanced book (8moves_v3.epd) alongside the usual ones with the UHO_Lichess one. The estimated Elo will still always be
based on the UHO results, as I feel those are more representative of engine strength (you are free to disagree :))
STC:
Elo | 86.08 +- 9.36 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2014 W: 774 L: 285 D: 955
Penta | [3, 114, 366, 439, 85]
LTC:
Elo | 72.61 +- 8.36 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2000 W: 704 L: 292 D: 1004
Penta | [2, 105, 413, 439, 41]
8moves_v3.epd
STC:
Elo | 68.67 +- 8.49 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2004 W: 547 L: 156 D: 1301
Penta | [4, 91, 480, 364, 63]
LTC:
Elo | 57.14 +- 7.39 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2000 W: 431 L: 105 D: 1464
Penta | [1, 70, 569, 322, 38]
Using the CCRL Blitz rating of Heimdall 1.2.2 (3476) and using the LTC result for consistency, this puts Heimdall's estimated Elo at ~3548!
Notes
In the interest of delivering the best performance to as many machines as possible and increasing transparency, the way binaries are named has changed. The -core2 builds are now the lowest common denominator, with -haswell (previously -modern) being a more modern alternative (only works on supported CPUs, just try it) and -zen2 being the most performant option that is still somewhat generic. There's also -avx512 binaries that should work on recent CPUs (AMD Zen 4/Intel Kaby Lake or later) and can net a substantial speedup depending on the underlying hardware implementation. To get the best possible performing binary, please build it on your machine with the make native command
Heimdall 1.2.2 vs other engines:
Tucano 12.00 | 14/14 | +14 | 14 Games |
Obsidian 14.20 SE | 4/12 | -4 | 12 Games |
Arasan 25.0 | 4/12 | -4 | 12 Games |
Patricia 4.0 | 4/10 | -2 | 10 Games |
Sting Black Hole 8 | 5.5/8 | +3 | 8 Games |
Monty 20241209 | 4.5/8 | +1 | 8 Games |
Halogen 12.12.3 JA | 4/8 | +0 | 8 Games |
Yuliana 6.0 | 1.5/6 | -3 | 6 Games |
Yuli GM STRONG X | 0.5/6 | -5 | 6 Games |
SF-PRO2 11.12.2024 | 0.5/6 | -5 | 6 Games |
RukChess 4.0.1 | 3/4 | +2 | 4 Games |
Rems M-091224 | 1.5/4 | -1 | 4 Games |
Akimbo 1.1.0 JA | 0.5/4 | -3 | 4 Games |
Jackal 1.1.0 | 2/2 | +2 | 2 Games |
Mcu-max 1.0.5 | 2/2 | +2 | 2 Games |
Drosophila 1.6 JA | 2/2 | +2 | 2 Games |
Mayhem 8.5 | 2/2 | +2 | 2 Games |
Nectar 0.2.1 | 2/2 | +2 | 2 Games |
Phalp 22032400 JA | 2/2 | +2 | 2 Games |
Astra 4.0.1 | 2/2 | +2 | 2 Games |
Chess cpp 4.10 | 2/2 | +2 | 2 Games |
Github: https://github.com/nocturn9x/heimdall
Comments
Post a Comment