mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-23 10:36:26 +08:00
Use 128 bit multiply for TT index
Remove super cluster stuff from TT and just use a 128 bit multiply. STC https://tests.stockfishchess.org/tests/view/5ee719b3aae8aec816ab7548 LLR: 2.94 (-2.94,2.94) {-1.50,0.50} Total: 12736 W: 2502 L: 2333 D: 7901 Ptnml(0-2): 191, 1452, 2944, 1559, 222 LTC https://tests.stockfishchess.org/tests/view/5ee732d1aae8aec816ab7556 LLR: 2.93 (-2.94,2.94) {-1.50,0.50} Total: 27584 W: 3431 L: 3350 D: 20803 Ptnml(0-2): 173, 2500, 8400, 2511, 208 Scheme back to being derived from https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/ Also the default optimized version of the index calculation now uses fewer instructions. https://godbolt.org/z/Tktxbv Might benefit from mulx (requires -mbmi2) closes https://github.com/official-stockfish/Stockfish/pull/2744 bench: 4320954
This commit is contained in:
committed by
Joost VandeVondele
parent
995ee4b311
commit
1ea488d34c
12
src/tt.h
12
src/tt.h
@@ -66,7 +66,6 @@ private:
|
||||
class TranspositionTable {
|
||||
|
||||
static constexpr int ClusterSize = 3;
|
||||
static constexpr int ClustersPerSuperCluster = 256;
|
||||
|
||||
struct Cluster {
|
||||
TTEntry entry[ClusterSize];
|
||||
@@ -84,20 +83,13 @@ public:
|
||||
void clear();
|
||||
|
||||
TTEntry* first_entry(const Key key) const {
|
||||
|
||||
// The index is computed from
|
||||
// Idx = (K48 * SCC) / 2^40, with K48 the 48 lowest bits swizzled.
|
||||
|
||||
const uint64_t firstTerm = uint32_t(key) * uint64_t(superClusterCount);
|
||||
const uint64_t secondTerm = (uint16_t(key >> 32) * uint64_t(superClusterCount)) >> 16;
|
||||
|
||||
return &table[(firstTerm + secondTerm) >> 24].entry[0];
|
||||
return &table[mul_hi64(key, clusterCount)].entry[0];
|
||||
}
|
||||
|
||||
private:
|
||||
friend struct TTEntry;
|
||||
|
||||
size_t superClusterCount;
|
||||
size_t clusterCount;
|
||||
Cluster* table;
|
||||
void* mem;
|
||||
uint8_t generation8; // Size must be not bigger than TTEntry::genBound8
|
||||
|
||||
Reference in New Issue
Block a user