/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
- Copyright (C) 2004-2021 The Stockfish developers (see AUTHORS file)
+ Copyright (C) 2004-2023 The Stockfish developers (see AUTHORS file)
Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#ifndef NNUE_ACCUMULATOR_H_INCLUDED
#define NNUE_ACCUMULATOR_H_INCLUDED
+#include <cstdint>
+
#include "nnue_architecture.h"
+#include "nnue_common.h"
namespace Stockfish::Eval::NNUE {
- // The accumulator of a StateInfo without parent is set to the INIT state
- enum AccumulatorState { EMPTY, COMPUTED, INIT };
-
- // Class that holds the result of affine transformation of input features
- struct alignas(kCacheLineSize) Accumulator {
- std::int16_t
- accumulation[2][kRefreshTriggers.size()][kTransformedFeatureDimensions];
- AccumulatorState state[2];
- };
+// Class that holds the result of affine transformation of input features
+struct alignas(CacheLineSize) Accumulator {
+ std::int16_t accumulation[2][TransformedFeatureDimensions];
+ std::int32_t psqtAccumulation[2][PSQTBuckets];
+ bool computed[2];
+};
} // namespace Stockfish::Eval::NNUE
-#endif // NNUE_ACCUMULATOR_H_INCLUDED
+#endif // NNUE_ACCUMULATOR_H_INCLUDED