mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
parent
aedebe35cf
commit
4f6aa15228
1 changed files with 31 additions and 29 deletions
|
@ -127,6 +127,35 @@ namespace {
|
|||
Move pv[3];
|
||||
};
|
||||
|
||||
// Set of rows with half bits set to 1 and half to 0. It is used to allocate
|
||||
// the search depths across the threads.
|
||||
typedef std::vector<int> Row;
|
||||
|
||||
const Row HalfDensity[] = {
|
||||
{0, 1},
|
||||
{1, 0},
|
||||
{0, 0, 1, 1},
|
||||
{0, 1, 1, 0},
|
||||
{1, 1, 0, 0},
|
||||
{1, 0, 0, 1},
|
||||
{0, 0, 0, 1, 1, 1},
|
||||
{0, 0, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 0, 0, 0},
|
||||
{1, 1, 0, 0, 0, 1},
|
||||
{1, 0, 0, 0, 1, 1},
|
||||
{0, 0, 0, 0, 1, 1, 1, 1},
|
||||
{0, 0, 0, 1, 1, 1, 1, 0},
|
||||
{0, 0, 1, 1, 1, 1, 0 ,0},
|
||||
{0, 1, 1, 1, 1, 0, 0 ,0},
|
||||
{1, 1, 1, 1, 0, 0, 0 ,0},
|
||||
{1, 1, 1, 0, 0, 0, 0 ,1},
|
||||
{1, 1, 0, 0, 0, 0, 1 ,1},
|
||||
{1, 0, 0, 0, 0, 1, 1 ,1},
|
||||
};
|
||||
|
||||
const size_t HalfDensitySize = std::extent<decltype(HalfDensity)>::value;
|
||||
|
||||
EasyMoveManager EasyMove;
|
||||
Value DrawValue[COLOR_NB];
|
||||
CounterMoveHistoryStats CounterMoveHistory;
|
||||
|
@ -353,33 +382,6 @@ void MainThread::search() {
|
|||
std::cout << sync_endl;
|
||||
}
|
||||
|
||||
const int halfDensityMap[][9] =
|
||||
{
|
||||
{2, 0, 1},
|
||||
{2, 1, 0},
|
||||
|
||||
{4, 0, 0, 1, 1},
|
||||
{4, 0, 1, 1, 0},
|
||||
{4, 1, 1, 0, 0},
|
||||
{4, 1, 0, 0, 1},
|
||||
|
||||
{6, 0, 0, 0, 1, 1, 1},
|
||||
{6, 0, 0, 1, 1, 1, 0},
|
||||
{6, 0, 1, 1, 1, 0, 0},
|
||||
{6, 1, 1, 1, 0, 0, 0},
|
||||
{6, 1, 1, 0, 0, 0, 1},
|
||||
{6, 1, 0, 0, 0, 1, 1},
|
||||
|
||||
{8, 0, 0, 0, 0, 1, 1, 1, 1},
|
||||
{8, 0, 0, 0, 1, 1, 1, 1, 0},
|
||||
{8, 0, 0, 1, 1, 1, 1, 0 ,0},
|
||||
{8, 0, 1, 1, 1, 1, 0, 0 ,0},
|
||||
{8, 1, 1, 1, 1, 0, 0, 0 ,0},
|
||||
{8, 1, 1, 1, 0, 0, 0, 0 ,1},
|
||||
{8, 1, 1, 0, 0, 0, 0, 1 ,1},
|
||||
{8, 1, 0, 0, 0, 0, 1, 1 ,1},
|
||||
};
|
||||
|
||||
|
||||
// Thread::search() is the main iterative deepening loop. It calls search()
|
||||
// repeatedly with increasing depth until the allocated thinking time has been
|
||||
|
@ -424,8 +426,8 @@ void Thread::search() {
|
|||
// 2nd ply (using a half-density matrix).
|
||||
if (!mainThread)
|
||||
{
|
||||
int row = (idx - 1) % 20;
|
||||
if (halfDensityMap[row][(rootDepth + rootPos.game_ply()) % halfDensityMap[row][0] + 1])
|
||||
const Row& row = HalfDensity[(idx - 1) % HalfDensitySize];
|
||||
if (row[(rootDepth + rootPos.game_ply()) % row.size()])
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue