Skip to content

Commit

Permalink
- Stockfishからnuma.h / cppをporting 作業中その1
Browse files Browse the repository at this point in the history
- ThreadIdOffsetエンジンオプション廃止
- Stockfishのmisc.hのsplit()とstr_to_size_t()をporting
- StringExtension::Split()をStockfishで実装されたsplit()に差し替え。それに伴う修正。
- TranspositionTableをstructからclassに変更。
- ThreadPoolをstructからclassに変更。
  • Loading branch information
yaneurao committed Oct 11, 2024
1 parent 7d18582 commit 54df0c4
Show file tree
Hide file tree
Showing 11 changed files with 1,772 additions and 46 deletions.
1 change: 1 addition & 0 deletions source/YaneuraOu.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,7 @@
<ClInclude Include="memory.h" />
<ClInclude Include="misc.h" />
<ClInclude Include="movepick.h" />
<ClInclude Include="numa.h" />
<ClInclude Include="search.h" />
<ClInclude Include="testcmd\unit_test.h" />
<ClInclude Include="thread_win32_osx.h" />
Expand Down
3 changes: 3 additions & 0 deletions source/YaneuraOu.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,9 @@
<ClInclude Include="memory.h">
<Filter>リソース ファイル</Filter>
</ClInclude>
<ClInclude Include="numa.h">
<Filter>リソース ファイル</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="movegen.cpp">
Expand Down
2 changes: 1 addition & 1 deletion source/book/makebook2023.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ namespace MakeBook2023
auto& token = splited2[0];
if (token == "NOE" && splited2.size() == 2) // numbers of entires
{
size_t noe = StringExtension::to_int(splited2[1],0);
size_t noe = StringExtension::to_int(string(splited2[1]),0);
cout << "Number of Sfen Entries = " << noe << endl;

// エントリー数が事前にわかったので、その分だけそれぞれの構造体配列を確保する。
Expand Down
4 changes: 0 additions & 4 deletions source/engine/yaneuraou-engine/yaneuraou-search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,6 @@ namespace {
// 探索用の定数
// -----------------------

// Different node types, used as a template parameter
// 探索しているnodeの種類
enum NodeType { NonPV, PV , Root};

// Futility margin
// depth(残り探索深さ)に応じたfutility margin。
// ※ RazoringはStockfish12で効果がないとされてしまい除去された。
Expand Down
53 changes: 33 additions & 20 deletions source/misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -657,10 +657,6 @@ namespace WinProcGroup {

void bindThisThread(size_t idx) {

#if defined(_WIN32)
idx += Options["ThreadIdOffset"];
#endif

// Use only local variables to be thread-safe

// 使うべきプロセッサグループ番号が返ってくる。
Expand Down Expand Up @@ -2052,25 +2048,27 @@ namespace StringExtension
return s;
}

// sを文字列sepで分割した文字列集合を返す。
std::vector<std::string> Split(const std::string& s, const std::string& sep)
{
std::vector<std::string> v;
string ss = s;
size_t p = 0; // 前回の分割場所
while (true)
// sを文字列spで分割した文字列集合を返す。
std::vector<std::string_view> Split(std::string_view s, std::string_view delimiter) {
std::vector<std::string_view> res;

if (s.empty())
return res;

size_t begin = 0;
for (;;)
{
size_t pos = ss.find(sep , p);
if (pos == string::npos)
{
// sepが見つからなかったのでこれでおしまい。
v.emplace_back(ss.substr(p));
const size_t end = s.find(delimiter, begin);
if (end == std::string::npos)
break;
}
v.emplace_back(ss.substr(p, pos - p));
p = pos + sep.length();

res.emplace_back(s.substr(begin, end - begin));
begin = end + delimiter.size();
}
return v;

res.emplace_back(s.substr(begin));

return res;
}

// Pythonの delemiter.join(v) みたいなの。
Expand All @@ -2089,6 +2087,21 @@ namespace StringExtension

};

// sを文字列spで分割した文字列集合を返す。
// ※ Stockfishとの互換性のために用意。
std::vector<std::string_view> split(std::string_view s, std::string_view delimiter)
{
return StringExtension::Split(s, delimiter);
}

// "123"みたいな文字列を123のように数値型(size_t)に変換する。
size_t str_to_size_t(const std::string& s) {
unsigned long long value = std::stoull(s);
if (value > std::numeric_limits<size_t>::max())
std::exit(EXIT_FAILURE);
return static_cast<size_t>(value);
}

// ----------------------------
// working directory
// ----------------------------
Expand Down
12 changes: 11 additions & 1 deletion source/misc.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <queue>
#include <unordered_set>
#include <condition_variable>
#include <string_view>

#include "types.h"

Expand Down Expand Up @@ -951,6 +952,7 @@ namespace Math {
// 文字列 拡張
// --------------------

// 文字列拡張(やねうら王独自)
namespace StringExtension
{
// 大文字・小文字を無視して文字列の比較を行う。
Expand Down Expand Up @@ -1004,13 +1006,21 @@ namespace StringExtension
extern std::string ToUpper(std::string const& value);

// sを文字列spで分割した文字列集合を返す。
extern std::vector<std::string> Split(const std::string& s , const std::string& sep);
extern std::vector<std::string_view> Split(std::string_view s, std::string_view delimiter);

// Pythonの delemiter.join(v) みたいなの。
// 例: v = [1,2,3] に対して ' '.join(v) == "1 2 3"
extern std::string Join(const std::vector<std::string>& v , const std::string& delimiter);
};

// sを文字列spで分割した文字列集合を返す。
// ※ Stockfishとの互換性のために用意。
extern std::vector<std::string_view> split(std::string_view s, std::string_view delimiter);

// "123"みたいな文字列を123のように数値型(size_t)に変換する。
extern size_t str_to_size_t(const std::string& s);


// --------------------
// Concurrent
// --------------------
Expand Down
Loading

0 comments on commit 54df0c4

Please sign in to comment.