Open ianfab opened 3 years ago
I tested the bench command on my machine. Looks like it doesn't support NNUE. And I used 1 thread because somehow when running more than 1 thread FS freezes.
See the bench
arguments at https://github.com/ianfab/Fairy-Stockfish/blob/67209f150d44b6ac5fcc01659442fcc9a4815e95/src/benchmark.cpp#L131-L136
The default mixed
means that it uses non-NNUE on odd numbered positions and NNUE on even numbered positions. Since we only have one position here, it uses non-NNUE. If you want to enforce usage of NNUE, you need to specify it, e.g., like bench xiangqi 16 1 13 default depth NNUE
.
The generalizations and feature additions compared to official Stockfish by necessity cause some overhead and hence a slowdown in NPS in Fairy-Stockfish. However, there should still be quite some room for regaining some of that performance e.g. by using faster code for variants for which the generalizations are not necessary, and/or pre-calculating derived properties from the variant rules.
Observations
Some methods that seem to be especially slow are:
Position::attackers_to
Position::slider_blockers
Position::set_check_info
Related tests/ideas
http://www.variantfishtest.org:6543/tests/view/60268e806e23db669974e8f0 http://www.variantfishtest.org:6543/tests/view/5fd4cf0f6e23db221d9e9511 http://www.variantfishtest.org:6543/tests/view/5fd4da786e23db221d9e9519 http://www.variantfishtest.org:6543/tests/view/5fc37df16e23db221d9e9430 http://www.variantfishtest.org:6543/tests/view/6026a0606e23db669974e8f7
Profiling
E.g., graphical profiling can be used to identify bottlenecks. Steps (also see http://talkchess.com/forum3/viewtopic.php?t=61373):
change compiler flags to enable profiling information. Different optimization levels (O3, Os, ...) can sometimes also make quite a difference, but using too much optimization can make it hard to interpret the results.
run bench. Optionally increase depth to get more accurate results, and run bench for different variants to check how it behaves depending on the rules of the game:
Create graphical profile: