Skip to content

Commit

Permalink
Merge static history into main history,
Browse files Browse the repository at this point in the history
thus simplifying and reducing the memory footprint.
I believe using static diff for better move ordering is more suited for
low depths, so restrict writing to low depths.

Todo: probably the condition for writing can be simplified

LTC:
LLR: 2.95 (-2.94,2.94) {-0.75,0.25}
Total: 18752 W: 768 L: 705 D: 17279
Ptnml(0-2): 7, 635, 8034, 688, 12
https://tests.stockfishchess.org/tests/view/5fd631791ac169120188859e

STC:
LLR: 2.95 (-2.94,2.94) {-1.25,0.25}
Total: 36504 W: 3380 L: 3313 D: 29811
Ptnml(0-2): 116, 2667, 12645, 2682, 142
https://tests.stockfishchess.org/tests/view/5fd5ed861ac1691201888569

closes official-stockfish#3262

bench: 4018036
  • Loading branch information
pb00067 authored and vondele committed Dec 14, 2020
1 parent d862ba4 commit 16adcb5
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 18 deletions.
9 changes: 4 additions & 5 deletions src/movepick.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ namespace {
/// ordering is at the current node.

/// MovePicker constructor for the main search
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const ButterflyHistory* sh, const LowPlyHistory* lp,
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const LowPlyHistory* lp,
const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, const Move* killers, int pl)
: pos(p), mainHistory(mh), staticHistory(sh), lowPlyHistory(lp), captureHistory(cph), continuationHistory(ch),
: pos(p), mainHistory(mh), lowPlyHistory(lp), captureHistory(cph), continuationHistory(ch),
ttMove(ttm), refutations{{killers[0], 0}, {killers[1], 0}, {cm, 0}}, depth(d), ply(pl) {

assert(d > 0);
Expand All @@ -66,9 +66,9 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHist
}

/// MovePicker constructor for quiescence search
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const ButterflyHistory* sh,
MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh,
const CapturePieceToHistory* cph, const PieceToHistory** ch, Square rs)
: pos(p), mainHistory(mh), staticHistory(sh), captureHistory(cph), continuationHistory(ch), ttMove(ttm), recaptureSquare(rs), depth(d) {
: pos(p), mainHistory(mh), captureHistory(cph), continuationHistory(ch), ttMove(ttm), recaptureSquare(rs), depth(d) {

assert(d <= 0);

Expand Down Expand Up @@ -105,7 +105,6 @@ void MovePicker::score() {

else if (Type == QUIETS)
m.value = (*mainHistory)[pos.side_to_move()][from_to(m)]
+ (*staticHistory)[pos.side_to_move()][from_to(m)]
+ 2 * (*continuationHistory[0])[pos.moved_piece(m)][to_sq(m)]
+ 2 * (*continuationHistory[1])[pos.moved_piece(m)][to_sq(m)]
+ 2 * (*continuationHistory[3])[pos.moved_piece(m)][to_sq(m)]
Expand Down
3 changes: 0 additions & 3 deletions src/movepick.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,10 @@ class MovePicker {
MovePicker& operator=(const MovePicker&) = delete;
MovePicker(const Position&, Move, Value, const CapturePieceToHistory*);
MovePicker(const Position&, Move, Depth, const ButterflyHistory*,
const ButterflyHistory*,
const CapturePieceToHistory*,
const PieceToHistory**,
Square);
MovePicker(const Position&, Move, Depth, const ButterflyHistory*,
const ButterflyHistory*,
const LowPlyHistory*,
const CapturePieceToHistory*,
const PieceToHistory**,
Expand All @@ -145,7 +143,6 @@ class MovePicker {

const Position& pos;
const ButterflyHistory* mainHistory;
const ButterflyHistory* staticHistory;
const LowPlyHistory* lowPlyHistory;
const CapturePieceToHistory* captureHistory;
const PieceToHistory** continuationHistory;
Expand Down
11 changes: 3 additions & 8 deletions src/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -815,13 +815,10 @@ namespace {
tte->save(posKey, VALUE_NONE, ss->ttPv, BOUND_NONE, DEPTH_NONE, MOVE_NONE, eval);
}

// Update static history for previous move
if (is_ok((ss-1)->currentMove) && !(ss-1)->inCheck && !priorCapture)
if ((ss-1)->moveCount > 1 && is_ok((ss-1)->currentMove) && !(ss-1)->inCheck && !priorCapture && depth < 7)
{
int bonus = ss->staticEval > -(ss-1)->staticEval + 2 * Tempo ? -stat_bonus(depth) :
ss->staticEval < -(ss-1)->staticEval + 2 * Tempo ? stat_bonus(depth) :
0;
thisThread->staticHistory[~us][from_to((ss-1)->currentMove)] << bonus;
int bonus = std::clamp(- (depth+1) * 2 * int((ss-1)->staticEval + ss->staticEval - 2 * Tempo), -1000, 1000);
thisThread->mainHistory[~us][from_to((ss-1)->currentMove)] << bonus;
}

// Step 7. Razoring (~1 Elo)
Expand Down Expand Up @@ -985,7 +982,6 @@ namespace {
Move countermove = thisThread->counterMoves[pos.piece_on(prevSq)][prevSq];

MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory,
&thisThread->staticHistory,
&thisThread->lowPlyHistory,
&captureHistory,
contHist,
Expand Down Expand Up @@ -1536,7 +1532,6 @@ namespace {
// queen and checking knight promotions, and other checks(only if depth >= DEPTH_QS_CHECKS)
// will be generated.
MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory,
&thisThread->staticHistory,
&thisThread->captureHistory,
contHist,
to_sq((ss-1)->currentMove));
Expand Down
1 change: 0 additions & 1 deletion src/thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ void Thread::clear() {

counterMoves.fill(MOVE_NONE);
mainHistory.fill(0);
staticHistory.fill(0);
lowPlyHistory.fill(0);
captureHistory.fill(0);

Expand Down
1 change: 0 additions & 1 deletion src/thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ class Thread {
Depth rootDepth, completedDepth;
CounterMoveHistory counterMoves;
ButterflyHistory mainHistory;
ButterflyHistory staticHistory;
LowPlyHistory lowPlyHistory;
CapturePieceToHistory captureHistory;
ContinuationHistory continuationHistory[2][2];
Expand Down

0 comments on commit 16adcb5

Please sign in to comment.