https://github.com/dshawul/nnue-probe.git
It has a FEN interface and a pieces[],squares[] interface as well
Code: Select all
DLLExport void _CDECL nnue_init(const char * evalFile);
DLLExport int _CDECL nnue_evaluate(int player, int* pieces, int* squares);
DLLExport int _CDECL nnue_evaluate_fen(const char* fen);
The "NNUE" implementation below was directly implemented in my engine with all the incremental update etc.
The "NNUE without increment" is through the library.
Code: Select all
No NNUE = 2100 knps
NNUE = 1400 knps
NNUE without increment = 1337 knps
NNUE without increment + memcpy = 1100 knps
NNUE without incremntal evaluation is just 4.5% slower on the start position.
When I added the updates in makemove with memcpy for Accumulator/DirtyPiece it was 14-18% slower.
But without it, it is so small not to worry about at all.