diff --git a/src/learn/gensfen.cpp b/src/learn/gensfen.cpp index 7c5b20be..7b135b81 100644 --- a/src/learn/gensfen.cpp +++ b/src/learn/gensfen.cpp @@ -673,7 +673,7 @@ namespace Learner } else { - Learner::search(pos, random_multi_pv_depth, random_multi_pv); + Search::search(pos, random_multi_pv_depth, random_multi_pv); // Select one from the top N hands of root Moves auto& rm = pos.this_thread()->rootMoves; @@ -790,7 +790,7 @@ namespace Learner const int depth = search_depth_min + (int)prng.rand(search_depth_max - search_depth_min + 1); // Starting search calls init_for_search - auto [search_value, search_pv] = search(pos, depth, 1, nodes); + auto [search_value, search_pv] = Search::search(pos, depth, 1, nodes); // This has to be performed after search because it needs to know // rootMoves which are filled in init_for_search. diff --git a/src/learn/learn.cpp b/src/learn/learn.cpp index b2ee5aa1..452bd15f 100644 --- a/src/learn/learn.cpp +++ b/src/learn/learn.cpp @@ -824,7 +824,7 @@ namespace Learner // The value of evaluate() may be used, but when calculating loss, learn_cross_entropy and // Use qsearch() because it is difficult to compare the values. // EvalHash has been disabled in advance. (If not, the same value will be returned every time) - const auto [_, pv] = qsearch(task_pos); + const auto [_, pv] = Search::qsearch(task_pos); const auto rootColor = task_pos.side_to_move(); @@ -962,7 +962,7 @@ namespace Learner // Determine if the teacher's move and the score of the shallow search match { - const auto [value, pv] = search(task_pos, 1); + const auto [value, pv] = Search::search(task_pos, 1); if ((uint16_t)pv[0] == ps.move) move_accord_count.fetch_add(1, std::memory_order_relaxed); } @@ -1186,7 +1186,7 @@ namespace Learner goto RETRY_READ; // Evaluation value of shallow search (qsearch) - const auto [_, pv] = qsearch(pos); + const auto [_, pv] = Search::qsearch(pos); // Evaluation value of deep search const auto deep_value = (Value)ps.score; diff --git a/src/search.cpp b/src/search.cpp index 26a675d7..79848812 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1968,9 +1968,7 @@ void Tablebases::rank_root_moves(Position& pos, Search::RootMoves& rootMoves) { } // --- expose the functions such as fixed depth search used for learning to the outside - - -namespace Learner +namespace Search { // For learning, prepare a stub that can call search,qsearch() from one thread. // From now on, it is better to have a Searcher and prepare a substitution table for each thread like Apery. @@ -1978,7 +1976,7 @@ namespace Learner // Initialization for learning. // Called from Learner::search(),Learner::qsearch(). - void init_for_search(Position& pos, Stack* ss) + static void init_for_search(Position& pos, Stack* ss) { // RootNode requires ss->ply == 0. @@ -2046,9 +2044,6 @@ namespace Learner } } - // A pair of reader and evaluation value. Returned by Learner::search(),Learner::qsearch(). - typedef std::pair > ValueAndPV; - // Stationary search. // // Precondition) Search thread is set by pos.set_this_thread(Threads[thread_id]). diff --git a/src/search.h b/src/search.h index ab832ee2..13123323 100644 --- a/src/search.h +++ b/src/search.h @@ -110,15 +110,12 @@ extern LimitsType Limits; void init(); void clear(); -} // namespace Search +// A pair of reader and evaluation value. Returned by Learner::search(),Learner::qsearch(). +using ValueAndPV = std::pair>; -namespace Learner { +ValueAndPV qsearch(Position& pos); +ValueAndPV search(Position& pos, int depth_, size_t multiPV = 1, uint64_t nodesLimit = 0); - // A pair of reader and evaluation value. Returned by Learner::search(),Learner::qsearch(). - using ValueAndPV = std::pair>; - - ValueAndPV qsearch(Position& pos); - ValueAndPV search(Position& pos, int depth_, size_t multiPV = 1, uint64_t nodesLimit = 0); } #endif // #ifndef SEARCH_H_INCLUDED diff --git a/src/uci.cpp b/src/uci.cpp index 73ff0256..ff735b2e 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -254,7 +254,7 @@ double UCI::win_rate_model_double(double v, int ply) { void qsearch_cmd(Position& pos) { cout << "qsearch : "; - auto pv = Learner::qsearch(pos); + auto pv = Search::qsearch(pos); cout << "Value = " << pv.first << " , " << UCI::value(pv.first) << " , PV = "; for (auto m : pv.second) cout << UCI::move(m, false) << " "; @@ -275,7 +275,7 @@ void search_cmd(Position& pos, istringstream& is) } cout << "search depth = " << depth << " , multi_pv = " << multi_pv << " : "; - auto pv = Learner::search(pos, depth, multi_pv); + auto pv = Search::search(pos, depth, multi_pv); cout << "Value = " << pv.first << " , " << UCI::value(pv.first) << " , PV = "; for (auto m : pv.second) cout << UCI::move(m, false) << " ";