• 0.3 48f1c2f82a

    Heimdall 0.3 Pre-Release

    nocturn9x released this 2024-07-07 17:21:35 +02:00 | 27 commits to master since this release

    Wow, version 0.3 already?! Yup!

    What changed

    • Singular extensions
    • New TT replacement policy (best move is kept if node fails low)
    • The next ply's killer moves are cleared at every node
    • IIR now also happens when the TT entry comes from a much lower depth than the one being searched
    • Added the EnableWeirdTCs UCI option, for you weirdos out there testing engines without increment ;)
    • Heimdall's search parameters are now tunable via SPSA (and most of them have been tuned)
    • The static eval is now cached in the TT
    • Cut node tracking and reductions
    • improving is now used in LMP
    • Minor aspiration windows tweaks
    • Capture history
    • Continuation history (1 ply only)
    • Fixed a bug where the previous moves/pieces were not being tracked correctly
    • Null moves from NMP are now counted correctly (they weren't before)

    Strenght improvements

    Fixed game match:

    • 1000 games (played as both white and black)
    • Pohl.epd as the opening book
    Elo   | 131.74 +- 17.23 (95%)
    Conf  | 8.0+0.08s Threads=1 Hash=16MB
    Games | N: 1000 W: 511 L: 149 D: 340
    Penta | [11, 34, 153, 186, 116]

    This puts the estimated Elo of this release at ~2837!

    The rules for picking the right executable have been simplified:

    • All releases assume a fairly recent 64 bit CPU with popcount support
    • If you're on Linux, try the linux-amd64-mimalloc version first, then linux-amd64
    • If you're on Windows, you don't really have a choice right now, sorry :(

    See ya for Heimdall 0.4!

  • 0.2 04443da166

    Heimdall 0.2 Pre-Release

    nocturn9x released this 2024-06-26 11:36:12 +02:00 | 76 commits to master since this release

    Ahoy! After heimdall's debut in the ranks of CCRL (still going!), here comes a new release.

    What changed

    A bunch of stuff, actually! Thanks to the folks on the Stockfish Discord server, your help has been invaluable!

    • LMP: It finally works!
    • Counter moves
    • IIR
    • SEE pruning
    • More aggressive LMR in non-pv nodes

    The quiet history (and hence the associated move ordering) has also been completely revamped and now features history malus as well.

    Some rough results between heimdall 0.1 (mimalloc build) vs this one (tc 8+0.08, 16MiB hash, Pohl opening book):

    Results of Heimdall Dev vs Heimdall 0.1: 
    Elo: 176.56 +/- 35.31, nElo: 239.22 +/- 40.27
    LOS: 100.00 %, DrawRatio: 24.48 %, PairsRatio: 9.80
    Games: 286, Wins: 161, Losses: 27, Draws: 98, Points: 210.0 (73.43 %)
    Ptnml(0-2): [2, 8, 35, 50, 48]
    LLR: 2.91 (-2.25, 2.89) [0.00, 10.00]

    Note: As with the previous releases, the mimalloc variants of the engine have Microsoft's mimalloc allocator statically linked in to replace malloc() (no dependencies are required on the target system for it to work!), which yields better performance, and the amd64 builds are optimized for Ryzen 3 CPUs (the ones I have). The generic builds are compiled with stock x86-64 flags, while the modern versions assume rather recent CPUs (with popcount/BMI2 support, etc.)

    Windows releases will be available soon!


  • 0.1 e39eae8d15

    Heimdall 0.1 Pre-Release

    nocturn9x released this 2024-06-12 11:44:37 +02:00 | 121 commits to master since this release

    At long last, here comes the first release of my engine! New name, new repo, hopefully better development practices as well (yeah RIGHT). The estimated Elo is somewhere in the mid to high 2700s (although CCRL will let me know for sure).

    Right now there's not many release versions available, I have to figure out Gitea's CI for that. All builds assume to be run on a fairly modern x86-64 system with popcnt support (realistically any half-decent CPU manufactured in the last ~10 years will do, let me know if you have issues though!)

    The heimdall-linux-amd64-mimalloc build is an optimized version targeting AMD processors and using mimalloc as the allocator, which nets it a decent performance improvement over the generic version. Mimalloc is linked against statically, so it does not need to be installed on the target system as a dynamic library for the binary to function. All builds do require glibc at the moment, but future releases will separate the tuner out to a separate module so the engine can be shipped as a self contained binary linked statically against musl libc in the future for even more platform independence goodness