mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00
Use last_1() to compute new TT size
Transposition table consists of a power of 2 number of TTCluster entries. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
089e54c7fd
commit
67d91dfd50
1 changed files with 8 additions and 10 deletions
18
src/tt.cpp
18
src/tt.cpp
|
@ -20,6 +20,7 @@
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "bitboard.h"
|
||||||
#include "tt.h"
|
#include "tt.h"
|
||||||
|
|
||||||
TranspositionTable TT; // Our global transposition table
|
TranspositionTable TT; // Our global transposition table
|
||||||
|
@ -37,18 +38,13 @@ TranspositionTable::~TranspositionTable() {
|
||||||
|
|
||||||
|
|
||||||
/// TranspositionTable::set_size() sets the size of the transposition table,
|
/// TranspositionTable::set_size() sets the size of the transposition table,
|
||||||
/// measured in megabytes.
|
/// measured in megabytes. Transposition table consists of a power of 2 number of
|
||||||
|
/// TTCluster and each cluster consists of ClusterSize number of TTEntries. Each
|
||||||
|
/// non-empty entry contains information of exactly one position.
|
||||||
|
|
||||||
void TranspositionTable::set_size(size_t mbSize) {
|
void TranspositionTable::set_size(size_t mbSize) {
|
||||||
|
|
||||||
size_t newSize = 1024;
|
size_t newSize = 1ULL << last_1((mbSize << 20) / sizeof(TTCluster));
|
||||||
|
|
||||||
// Transposition table consists of clusters and each cluster consists
|
|
||||||
// of ClusterSize number of TTEntries. Each non-empty entry contains
|
|
||||||
// information of exactly one position and newSize is the number of
|
|
||||||
// clusters we are going to allocate.
|
|
||||||
while (2ULL * newSize * sizeof(TTCluster) <= (mbSize << 20))
|
|
||||||
newSize *= 2;
|
|
||||||
|
|
||||||
if (newSize == size)
|
if (newSize == size)
|
||||||
return;
|
return;
|
||||||
|
@ -56,13 +52,15 @@ void TranspositionTable::set_size(size_t mbSize) {
|
||||||
size = newSize;
|
size = newSize;
|
||||||
delete [] entries;
|
delete [] entries;
|
||||||
entries = new (std::nothrow) TTCluster[size];
|
entries = new (std::nothrow) TTCluster[size];
|
||||||
|
|
||||||
if (!entries)
|
if (!entries)
|
||||||
{
|
{
|
||||||
std::cerr << "Failed to allocate " << mbSize
|
std::cerr << "Failed to allocate " << mbSize
|
||||||
<< "MB for transposition table." << std::endl;
|
<< "MB for transposition table." << std::endl;
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
clear();
|
|
||||||
|
clear(); // operator new is not guaranteed to initialize memory to zero
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue