Skip to content

Commit

Permalink
Extend bench to static evaluations
Browse files Browse the repository at this point in the history
this patch extends bench to print static evaluations.

./stockfish bench 16 1 1 filename eval

will now print the evaluations for all fens in the file.

This complements the various 'go' flavors for bench and might be useful for debugging and/or tuning.

No functional change.
  • Loading branch information
vondele authored and snicolet committed Nov 28, 2019
1 parent df340a8 commit 54253bc
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/benchmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ vector<string> setup_bench(const Position& current, istream& is) {
string fenFile = (is >> token) ? token : "default";
string limitType = (is >> token) ? token : "depth";

go = "go " + limitType + " " + limit;
go = limitType == "eval" ? "eval" : "go " + limitType + " " + limit;

if (fenFile == "default")
fens = Defaults;
Expand Down
3 changes: 3 additions & 0 deletions src/evaluate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -847,6 +847,9 @@ Value Eval::evaluate(const Position& pos) {

std::string Eval::trace(const Position& pos) {

if (pos.checkers())
return "Total evaluation: none (in check)";

std::memset(scores, 0, sizeof(scores));

pos.this_thread()->contempt = SCORE_ZERO; // Reset any dynamic contempt
Expand Down
15 changes: 10 additions & 5 deletions src/uci.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ namespace {
uint64_t num, nodes = 0, cnt = 1;

vector<string> list = setup_bench(pos, args);
num = count_if(list.begin(), list.end(), [](string s) { return s.find("go ") == 0; });
num = count_if(list.begin(), list.end(), [](string s) { return s.find("go ") == 0 || s.find("eval") == 0; });

TimePoint elapsed = now();

Expand All @@ -155,12 +155,17 @@ namespace {
istringstream is(cmd);
is >> skipws >> token;

if (token == "go")
if (token == "go" || token == "eval")
{
cerr << "\nPosition: " << cnt++ << '/' << num << endl;
go(pos, is, states);
Threads.main()->wait_for_search_finished();
nodes += Threads.nodes_searched();
if (token == "go")
{
go(pos, is, states);
Threads.main()->wait_for_search_finished();
nodes += Threads.nodes_searched();
}
else
sync_cout << "\n" << Eval::trace(pos) << sync_endl;
}
else if (token == "setoption") setoption(is);
else if (token == "position") position(pos, is, states);
Expand Down

0 comments on commit 54253bc

Please sign in to comment.