mirror of
https://github.com/peterosterlund2/droidfish.git
synced 2025-12-12 17:12:40 +01:00
DroidFish: Updated stockfish to a development version to fix problems on quad-core ARM CPUs.
This commit is contained in:
@@ -19,12 +19,14 @@
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <vector>
|
||||
|
||||
#include "misc.h"
|
||||
#include "position.h"
|
||||
#include "search.h"
|
||||
#include "thread.h"
|
||||
#include "tt.h"
|
||||
#include "ucioption.h"
|
||||
|
||||
using namespace std;
|
||||
@@ -57,34 +59,39 @@ static const char* Defaults[] = {
|
||||
/// format (defaults are the positions defined above) and the type of the
|
||||
/// limit value: depth (default), time in secs or number of nodes.
|
||||
|
||||
void benchmark(int argc, char* argv[]) {
|
||||
void benchmark(const Position& current, istream& is) {
|
||||
|
||||
vector<string> fens;
|
||||
string token;
|
||||
Search::LimitsType limits;
|
||||
int time;
|
||||
int64_t nodes = 0;
|
||||
vector<string> fens;
|
||||
|
||||
// Assign default values to missing arguments
|
||||
string ttSize = argc > 2 ? argv[2] : "128";
|
||||
string threads = argc > 3 ? argv[3] : "1";
|
||||
string valStr = argc > 4 ? argv[4] : "12";
|
||||
string fenFile = argc > 5 ? argv[5] : "default";
|
||||
string valType = argc > 6 ? argv[6] : "depth";
|
||||
string ttSize = (is >> token) ? token : "128";
|
||||
string threads = (is >> token) ? token : "1";
|
||||
string limit = (is >> token) ? token : "12";
|
||||
string fenFile = (is >> token) ? token : "default";
|
||||
string limitType = (is >> token) ? token : "depth";
|
||||
|
||||
Options["Hash"] = ttSize;
|
||||
Options["Threads"] = threads;
|
||||
Options["OwnBook"] = false;
|
||||
TT.clear();
|
||||
|
||||
if (valType == "time")
|
||||
limits.maxTime = 1000 * atoi(valStr.c_str()); // maxTime is in ms
|
||||
if (limitType == "time")
|
||||
limits.movetime = 1000 * atoi(limit.c_str()); // movetime is in ms
|
||||
|
||||
else if (valType == "nodes")
|
||||
limits.maxNodes = atoi(valStr.c_str());
|
||||
else if (limitType == "nodes")
|
||||
limits.nodes = atoi(limit.c_str());
|
||||
|
||||
else
|
||||
limits.maxDepth = atoi(valStr.c_str());
|
||||
limits.depth = atoi(limit.c_str());
|
||||
|
||||
if (fenFile != "default")
|
||||
if (fenFile == "default")
|
||||
fens.assign(Defaults, Defaults + 16);
|
||||
|
||||
else if (fenFile == "current")
|
||||
fens.push_back(current.to_fen());
|
||||
|
||||
else
|
||||
{
|
||||
string fen;
|
||||
ifstream file(fenFile.c_str());
|
||||
@@ -101,34 +108,34 @@ void benchmark(int argc, char* argv[]) {
|
||||
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
fens.assign(Defaults, Defaults + 16);
|
||||
|
||||
time = system_time();
|
||||
int64_t nodes = 0;
|
||||
Time time = Time::current_time();
|
||||
|
||||
for (size_t i = 0; i < fens.size(); i++)
|
||||
{
|
||||
Position pos(fens[i], false, 0);
|
||||
Position pos(fens[i], Options["UCI_Chess960"], Threads.main_thread());
|
||||
|
||||
cerr << "\nPosition: " << i + 1 << '/' << fens.size() << endl;
|
||||
|
||||
if (valType == "perft")
|
||||
if (limitType == "perft")
|
||||
{
|
||||
int64_t cnt = Search::perft(pos, limits.maxDepth * ONE_PLY);
|
||||
cerr << "\nPerft " << limits.maxDepth << " leaf nodes: " << cnt << endl;
|
||||
int64_t cnt = Search::perft(pos, limits.depth * ONE_PLY);
|
||||
cerr << "\nPerft " << limits.depth << " leaf nodes: " << cnt << endl;
|
||||
nodes += cnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
Threads.start_thinking(pos, limits);
|
||||
Threads.start_searching(pos, limits, vector<Move>());
|
||||
Threads.wait_for_search_finished();
|
||||
nodes += Search::RootPosition.nodes_searched();
|
||||
}
|
||||
}
|
||||
|
||||
time = system_time() - time;
|
||||
int e = time.elapsed();
|
||||
|
||||
cerr << "\n==========================="
|
||||
<< "\nTotal time (ms) : " << time
|
||||
<< "\nTotal time (ms) : " << e
|
||||
<< "\nNodes searched : " << nodes
|
||||
<< "\nNodes/second : " << int(nodes / (time / 1000.0)) << endl;
|
||||
<< "\nNodes/second : " << int(nodes / (e / 1000.0)) << endl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user