oslConfig.h
Go to the documentation of this file.
1 /* oslConfig.h
2  */
3 #ifndef OSL_OSLCONFIG_H
4 #define OSL_OSLCONFIG_H
5 
6 #include "osl/config.h"
7 #include <stdexcept>
8 #include <string>
9 #include <utility>
10 #include <mutex>
11 #include <functional>
12 #include <cassert>
13 #include <vector>
14 
15 namespace osl
16 {
18  struct OslConfig
19  {
20  static const int MaxThreads=64;
22  static const std::string& home(const std::string& initialize_if_first_invocation="");
23  static const char * home_c_str();
24  static const std::string gpsusiConf();
25 
27  static const std::string testPrivate();
28  static const std::string testPublic();
29  static const char *testPrivateFile(const std::string& filename);
30  static const char *testPublicFile(const std::string& filename);
31  static const char *testCsaFile(const std::string& filename);
32 
37  static const char *openingBook(const std::string& filenamme="");
38 
39  static void setVerbose(bool verbose);
40  static bool verbose();
41 
42  static void showOslHome();
43  static void setNumCPUs(int ncpu);
44  static int concurrency();
45 
46  static int dfpnMaxDepth();
47  static void setDfpnMaxDepth(int);
48 
50  static UsiMode usiMode();
51  static void setUsiMode(UsiMode new_mode=PortableUSI);
52  static bool usiModeInSilent();
53  static void setUsiSilent(bool silent=true);
54 
55  static bool searchExactValueInOneReply();
56  static void setSearchExactValueInOneReply(bool new_value);
57 
58  static size_t residentMemoryUse();
59  static size_t memoryUseLimit()
60  {
61  return static_cast<size_t>(memory_use_limit * memory_use_percent / 100.0);
62  }
63  static void setMemoryUseLimit(size_t limit) { memory_use_limit = limit; }
64  static double memoryUseRatio()
65  {
66  return residentMemoryUse() * 1.0 / memoryUseLimit();
67  }
68  static bool isMemoryLimitEffective()
69  {
71  && residentMemoryUse() > 0;
72  }
73  static void setMemoryUsePercent(double limit)
74  {
75  assert(limit > 0.0 && limit <= 100.0);
76  limit = std::max(0.01, limit);
77  limit = std::min(100.0, limit);
78  memory_use_percent = limit;
79  }
81  static unsigned int evalRandom() { return eval_random; }
82  static void setEvalRandom(unsigned int sigma) { eval_random = sigma; }
83 
84  static void setUsiOutputPawnValue(int new_value) { usi_output_pawn_value = new_value; }
85  static int usiOutputPawnValue() { return usi_output_pawn_value; }
87  static int inUnitTest() { return in_unit_test; }
88  static bool inUnitTestShort() { return in_unit_test == 1; }
89  static bool inUnitTestLong() { return in_unit_test == 2; }
90  static void setInUnitTest(int new_value) { in_unit_test = new_value; }
91 
93  static void setUp();
94  static bool hasByoyomi();
95  static void setHasByoyomi(bool);
96 
97  static bool healthCheck();
98  static int resignThreshold();
99  static std::string configuration();
100  private:
101  static const std::string makeHome(const std::string& first_try="");
102  static const std::string makeTest();
103  static const std::string makeTestPublic();
104  static bool isGoodDir(const std::string&);
105  static void trySetDir(std::string&, const std::string&);
106  static void showOslHome(const std::string&);
107  static size_t memory_use_limit;
108  static double memory_use_percent;
109  static const size_t memory_use_limit_system_max;
110  static unsigned int eval_random;
111  static bool is_verbose;
112  static const int default_ncpus;
113  static int num_cpu;
114  static volatile UsiMode usi_mode;
115  static volatile bool usi_mode_silent;
118  static volatile bool force_root_window;
119  static volatile int root_window_alpha, root_window_beta;
120  static volatile int in_unit_test;
121  static int dfpn_max_depth;
122  public:
123  static std::mutex lock_io;
124  // designed to be called before main
125  static void registerInitializer(std::function<void()>);
126  };
128  {
129  SetUpRegister(std::function<void()> f) {
131  }
132  };
133  struct NoMoreMemory : std::runtime_error
134  {
135  NoMoreMemory() : std::runtime_error("memory exhausted")
136  {
137  }
138  };
139 }
140 
141 #endif /* OSL_OSLCONFIG_H */
142 // ;;; Local Variables:
143 // ;;; mode:c++
144 // ;;; c-basic-offset:2
145 // ;;; End:
static const size_t memory_use_limit_system_max
Definition: oslConfig.h:109
static const std::string makeTest()
Definition: oslConfig.cc:274
static void setMemoryUsePercent(double limit)
Definition: oslConfig.h:73
int max(Player p, int v1, int v2)
Definition: evalTraits.h:84
static int usi_output_pawn_value
Definition: oslConfig.h:116
static size_t memory_use_limit
Definition: oslConfig.h:107
static void setUsiMode(UsiMode new_mode=PortableUSI)
Definition: oslConfig.cc:154
static const std::string makeTestPublic()
Definition: oslConfig.cc:287
static void setDfpnMaxDepth(int)
Definition: oslConfig.cc:495
static const std::string makeHome(const std::string &first_try="")
Definition: oslConfig.cc:213
static const std::string testPrivate()
テストケースのデータ
Definition: oslConfig.cc:300
static volatile int root_window_beta
Definition: oslConfig.h:119
static bool inUnitTestLong()
Definition: oslConfig.h:89
static void setUp()
評価関数等を初期化.
Definition: oslConfig.cc:438
static unsigned int evalRandom()
Definition: oslConfig.h:81
int min(Player p, int v1, int v2)
Definition: evalTraits.h:92
static const char * testCsaFile(const std::string &filename)
Definition: oslConfig.cc:359
static volatile bool usi_mode_silent
Definition: oslConfig.h:115
static size_t residentMemoryUse()
Definition: oslConfig.cc:388
static int inUnitTest()
Definition: oslConfig.h:87
static bool is_verbose
Definition: oslConfig.h:111
static bool verbose()
Definition: oslConfig.cc:145
static const char * testPrivateFile(const std::string &filename)
Definition: oslConfig.cc:339
static volatile bool force_root_window
Definition: oslConfig.h:118
static double memory_use_percent
Definition: oslConfig.h:108
static void setSearchExactValueInOneReply(bool new_value)
Definition: oslConfig.cc:170
static int dfpnMaxDepth()
Definition: oslConfig.cc:491
static std::mutex lock_io
Definition: oslConfig.h:123
static void showOslHome()
Definition: oslConfig.cc:191
static bool hasByoyomi()
Definition: oslConfig.cc:175
static void setMemoryUseLimit(size_t limit)
Definition: oslConfig.h:63
static volatile UsiMode usi_mode
Definition: oslConfig.h:114
static volatile int in_unit_test
Definition: oslConfig.h:120
static bool isGoodDir(const std::string &)
Definition: oslConfig.cc:196
static int usiOutputPawnValue()
Definition: oslConfig.h:85
static int dfpn_max_depth
Definition: oslConfig.h:121
static bool search_exact_value_in_one_reply
Definition: oslConfig.h:117
static void setVerbose(bool verbose)
Definition: oslConfig.cc:140
static std::string configuration()
Definition: oslConfig.cc:500
static const char * testPublicFile(const std::string &filename)
Definition: oslConfig.cc:349
static const int default_ncpus
Definition: oslConfig.h:112
SetUpRegister(std::function< void()> f)
Definition: oslConfig.h:129
osl の実行環境に関する指定
Definition: oslConfig.h:18
static void setNumCPUs(int ncpu)
Definition: oslConfig.cc:124
static int resignThreshold()
Definition: oslConfig.cc:267
static bool isMemoryLimitEffective()
Definition: oslConfig.h:68
static const std::string & home(const std::string &initialize_if_first_invocation="")
compile時に指定されたディレクトリを返す.
Definition: oslConfig.cc:239
static bool usiModeInSilent()
Definition: oslConfig.cc:158
static size_t memoryUseLimit()
Definition: oslConfig.h:59
static void registerInitializer(std::function< void()>)
Definition: oslConfig.cc:449
static void setUsiSilent(bool silent=true)
Definition: oslConfig.cc:162
static const char * openingBook(const std::string &filenamme="")
標準の定跡ファイルを返す
Definition: oslConfig.cc:369
static bool healthCheck()
Definition: oslConfig.cc:453
static int concurrency()
Definition: oslConfig.cc:133
static const std::string testPublic()
Definition: oslConfig.cc:306
static bool has_byoyomi
Definition: oslConfig.h:117
static UsiMode usiMode()
Definition: oslConfig.cc:150
static bool inUnitTestShort()
Definition: oslConfig.h:88
static volatile int root_window_alpha
Definition: oslConfig.h:119
static bool searchExactValueInOneReply()
Definition: oslConfig.cc:166
static const int MaxThreads
Definition: oslConfig.h:20
static void setInUnitTest(int new_value)
Definition: oslConfig.h:90
static void setHasByoyomi(bool)
Definition: oslConfig.cc:180
static unsigned int eval_random
Definition: oslConfig.h:110
static const char * home_c_str()
Definition: oslConfig.cc:245
static int num_cpu
Definition: oslConfig.h:113
static const std::string gpsusiConf()
Definition: oslConfig.cc:250
static void trySetDir(std::string &, const std::string &)
Definition: oslConfig.cc:202
static double memoryUseRatio()
Definition: oslConfig.h:64
static void setUsiOutputPawnValue(int new_value)
Definition: oslConfig.h:84
static void setEvalRandom(unsigned int sigma)
Definition: oslConfig.h:82