mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Update TT documentation
Update outdated and even misleading documentation. Also check #include-directives No functional change Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
6f6f59ea6a
commit
23db43e698
2 changed files with 16 additions and 15 deletions
29
src/tt.cpp
29
src/tt.cpp
|
@ -25,7 +25,6 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
#include "evaluate.h"
|
|
||||||
#include "tt.h"
|
#include "tt.h"
|
||||||
|
|
||||||
// The main transposition table
|
// The main transposition table
|
||||||
|
@ -55,8 +54,10 @@ void TranspositionTable::set_size(size_t mbSize) {
|
||||||
|
|
||||||
size_t newSize = 1024;
|
size_t newSize = 1024;
|
||||||
|
|
||||||
// We store a cluster of ClusterSize number of TTEntry for each position
|
// Transposition table consists of clusters and
|
||||||
// and newSize is the maximum number of storable positions.
|
// each cluster consists of ClusterSize number of TTEntries.
|
||||||
|
// Each non-empty entry contains information of exactly one position.
|
||||||
|
// newSize is the number of clusters we are going to allocate.
|
||||||
while ((2 * newSize) * sizeof(TTCluster) <= (mbSize << 20))
|
while ((2 * newSize) * sizeof(TTCluster) <= (mbSize << 20))
|
||||||
newSize *= 2;
|
newSize *= 2;
|
||||||
|
|
||||||
|
@ -78,7 +79,7 @@ void TranspositionTable::set_size(size_t mbSize) {
|
||||||
/// TranspositionTable::clear overwrites the entire transposition table
|
/// TranspositionTable::clear overwrites the entire transposition table
|
||||||
/// with zeroes. It is called whenever the table is resized, or when the
|
/// with zeroes. It is called whenever the table is resized, or when the
|
||||||
/// user asks the program to clear the table (from the UCI interface).
|
/// user asks the program to clear the table (from the UCI interface).
|
||||||
/// Perhaps we should also clear it when the "ucinewgame" command is recieved?
|
/// Perhaps we should also clear it when the "ucinewgame" command is received?
|
||||||
|
|
||||||
void TranspositionTable::clear() {
|
void TranspositionTable::clear() {
|
||||||
|
|
||||||
|
@ -86,15 +87,15 @@ void TranspositionTable::clear() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// TranspositionTable::store writes a new entry containing a position,
|
/// TranspositionTable::store writes a new entry containing position key and
|
||||||
/// a value, a value type, a search depth, and a best move to the
|
/// valuable information of current position.
|
||||||
/// transposition table. Transposition table is organized in clusters of
|
/// The Lowest order bits of position key are used to decide on which cluster
|
||||||
/// four TTEntry objects, and when a new entry is written, it replaces
|
/// the position will be placed.
|
||||||
/// the least valuable of the four entries in a cluster. A TTEntry t1 is
|
/// When a new entry is written and there are no empty entries available in cluster,
|
||||||
/// considered to be more valuable than a TTEntry t2 if t1 is from the
|
/// it replaces the least valuable of entries.
|
||||||
|
/// A TTEntry t1 is considered to be more valuable than a TTEntry t2 if t1 is from the
|
||||||
/// current search and t2 is from a previous search, or if the depth of t1
|
/// current search and t2 is from a previous search, or if the depth of t1
|
||||||
/// is bigger than the depth of t2. A TTEntry of type VALUE_TYPE_EVAL
|
/// is bigger than the depth of t2.
|
||||||
/// never replaces another entry for the same position.
|
|
||||||
|
|
||||||
void TranspositionTable::store(const Key posKey, Value v, ValueType t, Depth d, Move m, Value statV, Value kingD) {
|
void TranspositionTable::store(const Key posKey, Value v, ValueType t, Depth d, Move m, Value statV, Value kingD) {
|
||||||
|
|
||||||
|
@ -107,7 +108,7 @@ void TranspositionTable::store(const Key posKey, Value v, ValueType t, Depth d,
|
||||||
{
|
{
|
||||||
if (!tte->key() || tte->key() == posKey32) // empty or overwrite old
|
if (!tte->key() || tte->key() == posKey32) // empty or overwrite old
|
||||||
{
|
{
|
||||||
// Preserve any exsisting ttMove
|
// Preserve any existing ttMove
|
||||||
if (m == MOVE_NONE)
|
if (m == MOVE_NONE)
|
||||||
m = tte->move();
|
m = tte->move();
|
||||||
|
|
||||||
|
@ -115,7 +116,7 @@ void TranspositionTable::store(const Key posKey, Value v, ValueType t, Depth d,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0) // replace would be a no-op in this common case
|
if (i == 0) // Replacing first entry is default and already set before entering for-loop
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
c1 = (replace->generation() == generation ? 2 : 0);
|
c1 = (replace->generation() == generation ? 2 : 0);
|
||||||
|
|
2
src/tt.h
2
src/tt.h
|
@ -26,7 +26,7 @@
|
||||||
////
|
////
|
||||||
|
|
||||||
#include "depth.h"
|
#include "depth.h"
|
||||||
#include "position.h"
|
#include "move.h"
|
||||||
#include "value.h"
|
#include "value.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue