Skip to content

Commit

Permalink
remove globals again
Browse files Browse the repository at this point in the history
  • Loading branch information
Disservin committed Jan 8, 2024
1 parent 2cef80e commit 4fc8077
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 26 deletions.
13 changes: 5 additions & 8 deletions src/evaluate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,6 @@ namespace Stockfish {

namespace Eval {

std::unordered_map<NNUE::NetSize, EvalFile> EvalFiles = {
{NNUE::Big, {"EvalFile", EvalFileDefaultNameBig, "None"}},
{NNUE::Small, {"EvalFileSmall", EvalFileDefaultNameSmall, "None"}}};


// Tries to load a NNUE network at startup time, or when the engine
// receives a UCI command "setoption name EvalFile value nn-[a-z0-9]{12}.nnue"
Expand All @@ -74,9 +70,9 @@ std::unordered_map<NNUE::NetSize, EvalFile> EvalFiles = {
// network may be embedded in the binary), in the active working directory and
// in the engine directory. Distro packagers may define the DEFAULT_NNUE_DIRECTORY
// variable to have the engine search in a special directory in their distro.
void NNUE::init(const std::string& uciEvalFile,
const std::string& binaryDirectory,
const OptionsMap& Options) {
void NNUE::init(const std::string& binaryDirectory,
const OptionsMap& Options,
std::unordered_map<Eval::NNUE::NetSize, EvalFile>& EvalFiles) {

for (auto& [netSize, evalFile] : EvalFiles)
{
Expand Down Expand Up @@ -135,7 +131,8 @@ void NNUE::init(const std::string& uciEvalFile,
}

// Verifies that the last net used was loaded successfully
void NNUE::verify(const std::string& uciEvalFile, const OptionsMap& Options) {
void NNUE::verify(const OptionsMap& Options,
const std::unordered_map<Eval::NNUE::NetSize, EvalFile>& EvalFiles) {

for (const auto& [netSize, evalFile] : EvalFiles)
{
Expand Down
20 changes: 10 additions & 10 deletions src/evaluate.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,23 +44,23 @@ Value evaluate(const Position& pos, const Search::Worker& workerThread);
#define EvalFileDefaultNameBig "nn-baff1edbea57.nnue"
#define EvalFileDefaultNameSmall "nn-baff1ede1f90.nnue"

struct EvalFile {
std::string option_name;
std::string default_name;
std::string selected_name;
};

namespace NNUE {

enum NetSize : int;

void init(const std::string&, const std::string& binaryDirector, const OptionsMap& Options);
void verify(const std::string&, const OptionsMap& Options);
void init(const std::string& binaryDirector,
const OptionsMap& Options,
std::unordered_map<Eval::NNUE::NetSize, EvalFile>&);
void verify(const OptionsMap& Options, const std::unordered_map<Eval::NNUE::NetSize, EvalFile>&);

} // namespace NNUE


struct EvalFile {
std::string option_name;
std::string default_name;
std::string selected_name;
};

extern std::unordered_map<NNUE::NetSize, EvalFile> EvalFiles;
} // namespace Eval

} // namespace Stockfish
Expand Down
2 changes: 1 addition & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ int main(int argc, char* argv[]) {
Tune::init(uci.options);
Bitboards::init();
Position::init();
Eval::NNUE::init(uci.options["EvalFile"], uci.workingDirectory(), uci.options);
Eval::NNUE::init(uci.workingDirectory(), uci.options, uci.EvalFiles);

uci.loop();

Expand Down
4 changes: 3 additions & 1 deletion src/nnue/evaluate_nnue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,9 @@ bool save_eval(std::ostream& stream, NetSize netSize) {
}

// Save eval, to a file given by its name
bool save_eval(const std::optional<std::string>& filename, NetSize netSize) {
bool save_eval(const std::optional<std::string>& filename,
NetSize netSize,
const std::unordered_map<Eval::NNUE::NetSize, Eval::EvalFile>& EvalFiles) {

std::string actualFilename;
std::string msg;
Expand Down
6 changes: 5 additions & 1 deletion src/nnue/evaluate_nnue.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@
#include <memory>
#include <optional>
#include <string>
#include <unordered_map>

#include "../evaluate.h"
#include "../misc.h"
#include "../types.h"
#include "nnue_architecture.h"
Expand Down Expand Up @@ -75,7 +77,9 @@ void hint_common_parent_position(const Position& pos);

bool load_eval(const std::string name, std::istream& stream, NetSize netSize);
bool save_eval(std::ostream& stream, NetSize netSize);
bool save_eval(const std::optional<std::string>& filename, NetSize netSize);
bool save_eval(const std::optional<std::string>& filename,
NetSize netSize,
const std::unordered_map<Eval::NNUE::NetSize, Eval::EvalFile>&);

} // namespace Stockfish::Eval::NNUE

Expand Down
10 changes: 5 additions & 5 deletions src/uci.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ UciHandler::UciHandler(int argc, char** argv) :
options["SyzygyProbeDepth"] << Option(1, 1, 100);
options["Syzygy50MoveRule"] << Option(true);
options["SyzygyProbeLimit"] << Option(7, 0, 7);
options["EvalFile"] << Option(EvalFileDefaultNameBig, [this](const Option& o) {
Eval::NNUE::init(o, cli.binaryDirectory, options);
options["EvalFile"] << Option(EvalFileDefaultNameBig, [this](const Option&) {
Eval::NNUE::init(cli.binaryDirectory, options, EvalFiles);
});

threads.set({options, threads, tt});
Expand Down Expand Up @@ -148,7 +148,7 @@ void UciHandler::loop() {
std::string f;
if (is >> std::skipws >> f)
filename = f;
Eval::NNUE::save_eval(filename, Eval::NNUE::Big);
Eval::NNUE::save_eval(filename, Eval::NNUE::Big, EvalFiles);
}
else if (token == "--help" || token == "help" || token == "--license" || token == "license")
sync_cout
Expand Down Expand Up @@ -205,7 +205,7 @@ void UciHandler::go(Position& pos, std::istringstream& is, StateListPtr& states)
else if (token == "ponder")
ponderMode = true;

Eval::NNUE::verify(options["EvalFile"], options);
Eval::NNUE::verify(options, EvalFiles);

threads.start_thinking(options, pos, states, limits, ponderMode);
}
Expand Down Expand Up @@ -264,7 +264,7 @@ void UciHandler::trace_eval(Position& pos) {
Position p;
p.set(pos.fen(), options["UCI_Chess960"], &states->back());

Eval::NNUE::verify(options["EvalFile"], options);
Eval::NNUE::verify(options, EvalFiles);

sync_cout << "\n" << Eval::trace(p, *threads.main_thread()->worker.get()) << sync_endl;
}
Expand Down
7 changes: 7 additions & 0 deletions src/uci.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
#include <cstdint>
#include <iostream>
#include <string>
#include <unordered_map>

#include "evaluate.h"
#include "misc.h"
#include "position.h"
#include "thread.h"
Expand All @@ -32,6 +34,7 @@

namespace Stockfish {


namespace Search {
class Worker;
}
Expand Down Expand Up @@ -64,6 +67,10 @@ class UciHandler {
OptionsMap options;
std::string currentEvalFileName = "None";

std::unordered_map<Eval::NNUE::NetSize, Eval::EvalFile> EvalFiles = {
{Eval::NNUE::Big, {"EvalFile", EvalFileDefaultNameBig, "None"}},
{Eval::NNUE::Small, {"EvalFileSmall", EvalFileDefaultNameSmall, "None"}}};

private:
TranspositionTable tt;
ThreadPool threads;
Expand Down

0 comments on commit 4fc8077

Please sign in to comment.