diff options
| author | Scott Gasch <[email protected]> | 2026-10-23 13:19:17 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2026-10-23 13:19:17 -0700 |
| commit | 69525eb2f42ea9cca8255f6cc3b85e6b1312fd05 (patch) | |
| tree | d78420b6c45d584a3f09b4dcbaf4f1edb36e8d5d /tests/lop | |
| parent | 6b883e83935f5e8110788565cfcb77cd6fbf8950 (diff) | |
NNUE search integration: FH% tables, NODE_TYPE refinement, TREEDUMP rewrite
- data.c/chess.h: widen the joint FH% table's late axis 16->17, dedicating
the new bucket 0 to a whole-node ("will something here fail high at
all") sample rather than sharing it with the first-leftover-move curve.
Add an NNUE-eval counterpart table (g_uJointFHThousandths_NNUE) and an
NNUE counterpart of the beta-side table, selected at runtime based on
whether NNUE eval is active.
- search.c/searchsup.c: add _RefineNodeTypeGuess, which uses the FH%
tables (via g_NodeTypeGuessTable) to refine a node's NODE_TYPE guess
instead of the old heuristic; thread uParentMoveFHEstimate through
PLY_INFO so a node can see its parent's prediction for the move that
led to it.
- generate.c: initialize sKillers[2]/[3].uBonus unconditionally (an
uninitialized-stack read caught by valgrind under LTO; harmless today
but a real bug).
- dumptree.c/chess.h/GNUmakefile: replace the long-dead DUMP_TREE XML
tree dump (written for a GUI this project no longer has) with TREEDUMP,
a flat, path-keyed move/result trace meant to diff against an
identically-instrumented Stockfish build -- see docs/TREEDUMP_FORMAT.md.
- docs/DEEPER_PRUNING.md: notes on closing the search-efficiency gap vs
Stockfish.
- crafty_egtb/stockfish_xboard/typhoon_nnue: wrapper scripts so
match_play.py's Engine class can drive Crafty, Stockfish (via
PolyGlot), and an NNUE-enabled typhoon the same way it drives HCE
typhoon.
- tests/lop: rename lop.txt -> lop.ep_; update compare_lop.cpp.
- annotate_pgns: add aggregate_marginsafety.py, dedup_pgn.py,
fit_lazy_probe.py; update annotate.py/run_nnue_pipeline.py for the NNUE
training pipeline.
- .gitignore: ignore compile_commands.json (clangd build DB) and
eval.nnue (a symlink into the untracked head_reference/ comparison
baseline), neither of which belongs in the repo.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Diffstat (limited to 'tests/lop')
| -rw-r--r-- | tests/lop/compare_lop.cpp | 33 | ||||
| -rw-r--r-- | tests/lop/lop.ep_ (renamed from tests/lop/lop.txt) | 0 |
2 files changed, 32 insertions, 1 deletions
diff --git a/tests/lop/compare_lop.cpp b/tests/lop/compare_lop.cpp index 690df01..8062406 100644 --- a/tests/lop/compare_lop.cpp +++ b/tests/lop/compare_lop.cpp @@ -2,6 +2,7 @@ #include <memory.h> #include <stdlib.h> #include <cstdint> +#include <strings.h> typedef struct @@ -45,6 +46,36 @@ uint32_t MyHashString(const char *s) } +// Evals are normally plain centipawn integers (e.g. "35", "-120"), but some +// engines print mate scores as "+MATE10" / "-MATE3" instead of a number. +// Convert those into a large-magnitude centipawn value (sign-preserved, +// shorter mates score more extreme) so they still sort correctly and don't +// get dropped by atoi() silently returning 0. +int ParseEval(const char *s) +{ + int sign = 1; + const char *p = s; + + while (*p == ' ' || *p == '\t') + p++; + if (*p == '+') + p++; + else if (*p == '-') + { + sign = -1; + p++; + } + if (!strncasecmp(p, "MATE", 4)) + { + int pliesToMate = atoi(p + 4); + if (pliesToMate <= 0) + pliesToMate = 1; + return sign * (32767 - pliesToMate); + } + return atoi(s); +} + + int CompareLeftEvals(const void *a, const void *b) { position_t *pa = (position_t *)a; @@ -151,7 +182,7 @@ void ReadFileEvals(const char *fileName, bool isLeftFile) StripTrailingNewline(fenLine); StripTrailingNewline(evalLine); StripTrailingNewline(moveLine); - StoreFileEval(fenLine, fenNumber, atoi(evalLine), moveLine, isLeftFile); + StoreFileEval(fenLine, fenNumber, ParseEval(evalLine), moveLine, isLeftFile); fenNumber++; } fclose(f); diff --git a/tests/lop/lop.txt b/tests/lop/lop.ep_ index 37da48e..37da48e 100644 --- a/tests/lop/lop.txt +++ b/tests/lop/lop.ep_ |
