I have published Mindchess, a C99 legal-move perft engine with separately tuned AMD Zen 4 and Zen 5 kernels:
https://github.com/vtlmks/mindchess
It is single-threaded, uses no hashing or transposition table, and visits every position. The same move generator is used for every FEN; it does not recognize benchmark positions or select algorithms from position signatures.
The Zen 5 comparison below was measured on the 32 MiB L3 CCD of a Ryzen 9 9950X3D with stock boost enabled. CPU 9 and its SMT sibling 25 were isolated from normal processes, IRQs and unbound workqueues. The timed process ran under taskset and SCHED_FIFO priority 99.
For comparison, I used Chessbit by Thomas Huijbregts as the reference move generator. The Chessbit numbers come from the AVX2 Windows executable distributed with his project, run under Wine 11.14. Wine's persistent service threads were pinned to another core, leaving only the timed Chessbit process on CPU 9.
Mindchess values are medians of five runs and Chessbit values are medians of three runs. Rates are million nodes per second.
Code: Select all
Position Depth Nodes Mindchess Chessbit Difference
Start 7 3,195,901,860 3582.48 2774.52 +29.12%
Kiwipete 6 8,031,647,685 4536.99 4002.58 +13.35%
Midgame 6 6,923,051,137 5172.02 4583.86 +12.83%
Endgame 7 24,958,831,314 5079.09 4289.61 +18.40%
The tested 9950X3D exhibited a false dependency on the destination register of distinct-register TZCNT instructions. This motivated a separate Zen 5 kernel. Repairing those instructions after register allocation, together with different scheduling and lookup organization, recovered a substantial regression seen when running the retained Zen 4 kernel on this CPU.
The repository contains the complete Zen 4 and Zen 5 results, correctness tests, build scripts, a native source comparison with pinned Chessbit source, performance-counter measurements, and notes about the retained and rejected optimizations.
These are local measurements for the stated processor and software configuration, not a claim about performance on other CPUs.
The README contains the complete build and measurement procedure, correctness checks, performance-counter data, and notes on retained and rejected variants. I have tried to document the likely technical questions there.