#include <thread>
#include <vector>
+#include "cluster.h"
#include "material.h"
#include "movepick.h"
#include "pawns.h"
size_t pvIdx, pvLast, shuffleExts;
int selDepth, nmpMinPly;
Color nmpColor;
- std::atomic<uint64_t> nodes, tbHits, bestMoveChanges;
+ std::atomic<uint64_t> nodes, tbHits, TTsaves, bestMoveChanges;
Position rootPos;
Search::RootMoves rootMoves;
CounterMoveHistory counterMoves;
ButterflyHistory mainHistory;
CapturePieceToHistory captureHistory;
- ContinuationHistory continuationHistory[2];
+ ContinuationHistory continuationHistory[2][2];
Score contempt;
+
+#ifdef USE_MPI
+ struct {
+ std::mutex mutex;
+ Cluster::TTCache<Cluster::TTCacheSize> buffer = {};
+ } ttCache;
+#endif
};
MainThread* main() const { return static_cast<MainThread*>(front()); }
uint64_t nodes_searched() const { return accumulate(&Thread::nodes); }
uint64_t tb_hits() const { return accumulate(&Thread::tbHits); }
+ uint64_t TT_saves() const { return accumulate(&Thread::TTsaves); }
std::atomic_bool stop;