Skip to content

Commit

Permalink
Improve testing coverage, remove unused code
Browse files Browse the repository at this point in the history
a) Add further tests to CI to cover most features. This uncovered a potential race
in case setoption was sent between two searches. As the UCI protocol requires
this sent to be went the engine is not searching, setoption now ensures that
this is the case.

b) Remove some unused code

closes official-stockfish#4730

No functional change
  • Loading branch information
vondele authored and snicolet committed Aug 11, 2023
1 parent 0d2ddb8 commit 8192945
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 81 deletions.
55 changes: 0 additions & 55 deletions src/nnue/layers/simd.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,23 +79,6 @@ namespace Stockfish::Simd {
return _mm512_add_epi32(sum0123a, sum0123b);
}

[[maybe_unused]] static __m128i m512_haddx4(
__m512i sum0, __m512i sum1, __m512i sum2, __m512i sum3,
__m128i bias) {

__m512i sum = m512_hadd128x16_interleave(sum0, sum1, sum2, sum3);

__m256i sum256lo = _mm512_castsi512_si256(sum);
__m256i sum256hi = _mm512_extracti64x4_epi64(sum, 1);

sum256lo = _mm256_add_epi32(sum256lo, sum256hi);

__m128i sum128lo = _mm256_castsi256_si128(sum256lo);
__m128i sum128hi = _mm256_extracti128_si256(sum256lo, 1);

return _mm_add_epi32(_mm_add_epi32(sum128lo, sum128hi), bias);
}

[[maybe_unused]] static void m512_add_dpbusd_epi32(
__m512i& acc,
__m512i a,
Expand Down Expand Up @@ -138,21 +121,6 @@ namespace Stockfish::Simd {
return _mm_cvtsi128_si32(sum128) + bias;
}

[[maybe_unused]] static __m128i m256_haddx4(
__m256i sum0, __m256i sum1, __m256i sum2, __m256i sum3,
__m128i bias) {

sum0 = _mm256_hadd_epi32(sum0, sum1);
sum2 = _mm256_hadd_epi32(sum2, sum3);

sum0 = _mm256_hadd_epi32(sum0, sum2);

__m128i sum128lo = _mm256_castsi256_si128(sum0);
__m128i sum128hi = _mm256_extracti128_si256(sum0, 1);

return _mm_add_epi32(_mm_add_epi32(sum128lo, sum128hi), bias);
}

[[maybe_unused]] static void m256_add_dpbusd_epi32(
__m256i& acc,
__m256i a,
Expand Down Expand Up @@ -194,16 +162,6 @@ namespace Stockfish::Simd {
return _mm_cvtsi128_si32(sum) + bias;
}

[[maybe_unused]] static __m128i m128_haddx4(
__m128i sum0, __m128i sum1, __m128i sum2, __m128i sum3,
__m128i bias) {

sum0 = _mm_hadd_epi32(sum0, sum1);
sum2 = _mm_hadd_epi32(sum2, sum3);
sum0 = _mm_hadd_epi32(sum0, sum2);
return _mm_add_epi32(sum0, bias);
}

[[maybe_unused]] static void m128_add_dpbusd_epi32(
__m128i& acc,
__m128i a,
Expand Down Expand Up @@ -261,19 +219,6 @@ namespace Stockfish::Simd {
return neon_m128_reduce_add_epi32(sum) + bias;
}

[[maybe_unused]] static int32x4_t neon_m128_haddx4(
int32x4_t sum0, int32x4_t sum1, int32x4_t sum2, int32x4_t sum3,
int32x4_t bias) {

int32x4_t hsums {
neon_m128_reduce_add_epi32(sum0),
neon_m128_reduce_add_epi32(sum1),
neon_m128_reduce_add_epi32(sum2),
neon_m128_reduce_add_epi32(sum3)
};
return vaddq_s32(hsums, bias);
}

[[maybe_unused]] static void neon_m128_add_dpbusd_epi32x2(
int32x4_t& acc,
int8x8_t a0, int8x8_t b0,
Expand Down
23 changes: 0 additions & 23 deletions src/syzygy/tbprobe.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@
#ifndef TBPROBE_H
#define TBPROBE_H

#include <ostream>

#include "../search.h"

namespace Stockfish::Tablebases {
Expand Down Expand Up @@ -50,27 +48,6 @@ bool root_probe(Position& pos, Search::RootMoves& rootMoves);
bool root_probe_wdl(Position& pos, Search::RootMoves& rootMoves);
void rank_root_moves(Position& pos, Search::RootMoves& rootMoves);

inline std::ostream& operator<<(std::ostream& os, const WDLScore v) {

os << (v == WDLLoss ? "Loss" :
v == WDLBlessedLoss ? "Blessed loss" :
v == WDLDraw ? "Draw" :
v == WDLCursedWin ? "Cursed win" :
v == WDLWin ? "Win" : "None");

return os;
}

inline std::ostream& operator<<(std::ostream& os, const ProbeState v) {

os << (v == FAIL ? "Failed" :
v == OK ? "Success" :
v == CHANGE_STM ? "Probed opponent side" :
v == ZEROING_BEST_MOVE ? "Best move zeroes DTZ" : "None");

return os;
}

} // namespace Stockfish::Tablebases

#endif
1 change: 0 additions & 1 deletion src/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,6 @@ inline T& operator/=(T& d, int i) { return d = T(int(d) / i); }
ENABLE_FULL_OPERATORS_ON(Value)
ENABLE_FULL_OPERATORS_ON(Direction)

ENABLE_INCR_OPERATORS_ON(Piece)
ENABLE_INCR_OPERATORS_ON(PieceType)
ENABLE_INCR_OPERATORS_ON(Square)
ENABLE_INCR_OPERATORS_ON(File)
Expand Down
2 changes: 2 additions & 0 deletions src/uci.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ namespace {

void setoption(istringstream& is) {

Threads.main()->wait_for_search_finished();

string token, name, value;

is >> token; // Consume the "name" token
Expand Down
52 changes: 50 additions & 2 deletions tests/instrumented.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,32 @@ EOF
;;
esac

cat << EOF > bench_tmp.epd
Rn6/1rbq1bk1/2p2n1p/2Bp1p2/3Pp1pP/1N2P1P1/2Q1NPB1/6K1 w - - 2 26
rnbqkb1r/ppp1pp2/5n1p/3p2p1/P2PP3/5P2/1PP3PP/RNBQKBNR w KQkq - 0 3
3qnrk1/4bp1p/1p2p1pP/p2bN3/1P1P1B2/P2BQ3/5PP1/4R1K1 w - - 9 28
r4rk1/1b2ppbp/pq4pn/2pp1PB1/1p2P3/1P1P1NN1/1PP3PP/R2Q1RK1 w - - 0 13
EOF

# simple command line testing
for args in "eval" \
"go nodes 1000" \
"go depth 10" \
"go perft 4" \
"go movetime 1000" \
"go wtime 8000 btime 8000 winc 500 binc 500" \
"go wtime 1000 btime 1000 winc 0 binc 0" \
"go wtime 1000 btime 1000 winc 0 binc 0" \
"go wtime 1000 btime 1000 winc 0 binc 0 movestogo 5" \
"go movetime 200" \
"go nodes 20000 searchmoves e2e4 d2d4" \
"bench 128 $threads 8 default depth" \
"export_net verify.nnue"
"bench 128 $threads 3 bench_tmp.epd depth" \
"export_net verify.nnue" \
"d" \
"compiler" \
"license" \
"uci"
do

echo "$prefix $exeprefix ./stockfish $args $postfix"
Expand All @@ -92,6 +110,7 @@ cat << EOF > game.exp
send "uci\n"
expect "uciok"
# send "setoption name Debug Log File value debug.log\n"
send "setoption name Threads value $threads\n"
send "ucinewgame\n"
Expand All @@ -107,6 +126,28 @@ cat << EOF > game.exp
send "go depth 10\n"
expect "bestmove"
send "setoption name UCI_ShowWDL value true\n"
send "position startpos\n"
send "flip\n"
send "go depth 5\n"
expect "bestmove"
send "setoption name Skill Level value 10\n"
send "position startpos\n"
send "go depth 5\n"
expect "bestmove"
send "setoption name Clear Hash\n"
send "setoption name EvalFile value verify.nnue\n"
send "position startpos\n"
send "go depth 5\n"
expect "bestmove"
send "setoption name MultiPV value 4\n"
send "position startpos\n"
send "go depth 5\n"
send "quit\n"
expect eof
Expand All @@ -128,6 +169,13 @@ cat << EOF > syzygy.exp
send "setoption name SyzygyPath value ../tests/syzygy/\n"
expect "info string Found 35 tablebases" {} timeout {exit 1}
send "bench 128 1 8 default depth\n"
send "ucinewgame\n"
send "position fen 4k3/PP6/8/8/8/8/8/4K3 w - - 0 1\n"
send "go depth 5\n"
expect "bestmove"
send "position fen 8/1P6/2B5/8/4K3/8/6k1/8 w - - 0 1\n"
send "go depth 5\n"
expect "bestmove"
send "quit\n"
expect eof
Expand All @@ -146,6 +194,6 @@ do

done

rm -f tsan.supp
rm -f tsan.supp bench_tmp.epd

echo "instrumented testing OK"

0 comments on commit 8192945

Please sign in to comment.