mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-26 03:56:50 +08:00
Revisit NNUE initialization
this revisits the initialization of NNUE, basically only changing the state on the UCI options 'Use NNUE' and 'EvalFile' calling init_NNUE(), which sets the Eval::useNNUE variable, and loads the network if needed (i.e. useNNUE is true and the same network is not yet loaded) init_NNUE is silent (i.e. no info strings), so that it can be called at startup without confusing certain GUIs. An error message on wrong setting when asking for (i.e. the net failed to load), is delayed to the point where everything must be consistent (start of search or eval). The engine will stop if the settings are wrong at that point. Also works if the default value of Use NNUE would become true.
This commit is contained in:
@@ -20,18 +20,44 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include <cstring> // For std::memset
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
#include "bitboard.h"
|
||||
#include "evaluate.h"
|
||||
#include "material.h"
|
||||
#include "pawns.h"
|
||||
#include "thread.h"
|
||||
#include "uci.h"
|
||||
|
||||
namespace Eval {
|
||||
bool useNNUE;
|
||||
|
||||
bool useNNUE;
|
||||
std::string eval_file_loaded="None";
|
||||
|
||||
void init_NNUE() {
|
||||
|
||||
useNNUE = Options["Use NNUE"];
|
||||
std::string eval_file = std::string(Options["EvalFile"]);
|
||||
if (useNNUE && eval_file_loaded != eval_file)
|
||||
if (Eval::NNUE::load_eval_file(eval_file))
|
||||
eval_file_loaded = eval_file;
|
||||
}
|
||||
|
||||
void verify_NNUE() {
|
||||
|
||||
std::string eval_file = std::string(Options["EvalFile"]);
|
||||
if (useNNUE && eval_file_loaded != eval_file)
|
||||
{
|
||||
std::cerr << "Use of NNUE evaluation, but the file " << eval_file << " was not loaded successfully. "
|
||||
<< "These network evaluation parameters must be available, compatible with this version of the code. "
|
||||
<< "The UCI option EvalFile might need to specify the full path, including the directory/folder name, to the file." << std::endl;
|
||||
std::exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Trace {
|
||||
|
||||
Reference in New Issue
Block a user