#include <parallelSearch.h>
Public メソッド | |
ParallelSearch () | |
~ParallelSearch () | |
void | setVerbose (bool v=true) |
void | addInLock (Worker *worker) |
void | add (Worker *worker) |
const Job | getJob (Worker *w) |
const Job | getJobInLock (Worker *w) |
const Job | getJobNonBlock (Worker *w) |
const Job | getJobNonBlock (Worker *w, uint64_t blocking, uint64_t sibling) |
blocking bitΩäƤСbitjobΤ | |
Worker * | getWorker () |
ߤΥåɤWorker֤ бΤʤϡallocate롥 | |
void | notify_one () |
void | makeWorkers () |
void | setNumCPUs (int n) |
int | numCpus () const |
void | checkStop () |
bool | stopping () const |
void | waitAll () |
void | setMasterAlarm (AlarmSwitch alarm) |
bool | stopMaster () |
void | reportWorkers () |
int | numActives () const |
bool | hasWaiting (uint64_t blocking, Worker *&who) |
Public 変数 | |
boost::condition | shared_condition |
boost::mutex | shared_mutex |
Static Public 変数 | |
static const int | MaxCPUs = 16 |
Private メソッド | |
void | checkTime () |
void | incActives () |
void | decActives () |
void | incWaiting () |
void | decWaiting () |
Private 変数 | |
AtomicCounter | num_actives |
AtomicCounter | max_num_actives |
AtomicCounter | thread_count |
AtomicCounter | waiting |
vector< Worker * > | workers |
int | num_cpus |
time_t | last_time |
AlarmSwitch | master_stop_flag |
bool | verbose |
volatile bool | stop_all |
フレンド | |
class | JobContent |
class | IncActiveHelper |
class | DecActiveHelper |
class | IncWaitingHelper |
class | DecWaitingHelper |
parallelSearch.h の 315 行で定義されています。
osl::search::ParallelSearch::ParallelSearch | ( | ) |
osl::search::ParallelSearch::~ParallelSearch | ( | ) |
void osl::search::ParallelSearch::checkTime | ( | ) | [private] |
parallelSearch.cc の 366 行で定義されています。
参照先 last_time, num_actives, num_cpus, verbose, と waiting.
参照元 decActives(), incActives(), と makeWorkers().
void osl::search::ParallelSearch::setVerbose | ( | bool | v = true |
) | [inline] |
void osl::search::ParallelSearch::addInLock | ( | Worker * | worker | ) | [inline] |
parallelSearch.h の 338 行で定義されています。
参照先 osl::search::Worker::setThreadId(), と workers.
参照元 add(), getWorker(), makeWorkers(), と ParallelSearch().
void osl::search::ParallelSearch::add | ( | Worker * | worker | ) | [inline] |
const osl::search::Job osl::search::ParallelSearch::getJob | ( | Worker * | w | ) |
const osl::search::Job osl::search::ParallelSearch::getJobInLock | ( | Worker * | w | ) |
parallelSearch.cc の 216 行で定義されています。
参照先 osl::search::Job::isNull(), osl::search::JobContent::NotFoundPriority, と workers.
参照元 getJob(), と getJobNonBlock().
const osl::search::Job osl::search::ParallelSearch::getJobNonBlock | ( | Worker * | w | ) |
parallelSearch.cc の 236 行で定義されています。
参照先 osl::search::Worker::checkStop(), getJobInLock(), と shared_mutex.
const osl::search::Job osl::search::ParallelSearch::getJobNonBlock | ( | Worker * | w, | |
uint64_t | blocking, | |||
uint64_t | sibling | |||
) |
blocking bitΩäƤСbitjobΤ
parallelSearch.cc の 248 行で定義されています。
参照先 osl::search::Worker::checkStop(), osl::search::Job::isNull(), osl::search::JobContent::NotFoundPriority, osl::search::Worker::setWaiting(), shared_mutex, と workers.
osl::search::Worker * osl::search::ParallelSearch::getWorker | ( | ) |
ߤΥåɤWorker֤ бΤʤϡallocate롥
parallelSearch.cc の 294 行で定義されています。
参照先 addInLock(), shared_mutex, と workers.
参照元 checkStop(), と ParallelSearch().
void osl::search::ParallelSearch::notify_one | ( | ) | [inline] |
void osl::search::ParallelSearch::makeWorkers | ( | ) |
parallelSearch.cc の 334 行で定義されています。
参照先 addInLock(), checkTime(), incActives(), notify_one(), num_actives, num_cpus, shared_condition, shared_mutex, thread_count, と waiting.
参照元 osl::search::Worker::push_back(), と osl::search::JobContent::waitResult().
void osl::search::ParallelSearch::setNumCPUs | ( | int | n | ) | [inline] |
int osl::search::ParallelSearch::numCpus | ( | ) | const [inline] |
void osl::search::ParallelSearch::checkStop | ( | ) |
parallelSearch.cc の 308 行で定義されています。
参照先 osl::search::Worker::checkStop(), と getWorker().
参照元 osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::searchAllMoves(), osl::search::MTDF< Eval, MoveGenerator, Table, Recorder, Probabilities >::testMove(), と osl::search::JobContent::waitResult().
bool osl::search::ParallelSearch::stopping | ( | ) | const [inline] |
parallelSearch.h の 366 行で定義されています。
参照先 master_stop_flag, と stop_all.
参照元 osl::search::Worker::checkStop(), と osl::search::JobContent::checkStop().
void osl::search::ParallelSearch::waitAll | ( | ) |
void osl::search::ParallelSearch::setMasterAlarm | ( | AlarmSwitch | alarm | ) | [inline] |
bool osl::search::ParallelSearch::stopMaster | ( | ) |
void osl::search::ParallelSearch::reportWorkers | ( | ) |
int osl::search::ParallelSearch::numActives | ( | ) | const [inline] |
bool osl::search::ParallelSearch::hasWaiting | ( | uint64_t | blocking, | |
Worker *& | who | |||
) |
void osl::search::ParallelSearch::incActives | ( | ) | [private] |
void osl::search::ParallelSearch::decActives | ( | ) | [private] |
parallelSearch.cc の 385 行で定義されています。
参照先 checkTime(), と num_actives.
参照元 osl::search::DecActiveHelper::DecActiveHelper(), と osl::search::IncActiveHelper::~IncActiveHelper().
void osl::search::ParallelSearch::incWaiting | ( | ) | [private] |
void osl::search::ParallelSearch::decWaiting | ( | ) | [private] |
friend class JobContent [friend] |
parallelSearch.h の 383 行で定義されています。
friend class IncActiveHelper [friend] |
parallelSearch.h の 384 行で定義されています。
friend class DecActiveHelper [friend] |
parallelSearch.h の 385 行で定義されています。
friend class IncWaitingHelper [friend] |
parallelSearch.h の 386 行で定義されています。
friend class DecWaitingHelper [friend] |
parallelSearch.h の 387 行で定義されています。
AtomicCounter osl::search::ParallelSearch::num_actives [private] |
parallelSearch.h の 317 行で定義されています。
参照元 checkTime(), decActives(), incActives(), makeWorkers(), numActives(), と waitAll().
AtomicCounter osl::search::ParallelSearch::max_num_actives [private] |
AtomicCounter osl::search::ParallelSearch::thread_count [private] |
AtomicCounter osl::search::ParallelSearch::waiting [private] |
parallelSearch.h の 320 行で定義されています。
参照元 checkTime(), decWaiting(), hasWaiting(), incWaiting(), makeWorkers(), と waitAll().
vector<Worker*> osl::search::ParallelSearch::workers [private] |
parallelSearch.h の 321 行で定義されています。
参照元 addInLock(), getJobInLock(), getJobNonBlock(), getWorker(), hasWaiting(), ParallelSearch(), reportWorkers(), waitAll(), と ~ParallelSearch().
int osl::search::ParallelSearch::num_cpus [private] |
parallelSearch.h の 322 行で定義されています。
参照元 checkTime(), makeWorkers(), numCpus(), ParallelSearch(), と setNumCPUs().
time_t osl::search::ParallelSearch::last_time [private] |
AlarmSwitch osl::search::ParallelSearch::master_stop_flag [private] |
bool osl::search::ParallelSearch::verbose [private] |
volatile bool osl::search::ParallelSearch::stop_all [private] |
const int osl::search::ParallelSearch::MaxCPUs = 16 [static] |
boost::condition osl::search::ParallelSearch::shared_condition |
boost::mutex osl::search::ParallelSearch::shared_mutex |