mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 05:07:46 +00:00
Expose the lazy threshold for the feature transformer PSQT as a parameter.
Definition of the lazy threshold moved to evaluate.cpp where all others are. Lazy threshold only used for real searches, not used for the "eval" call. This preserves the purity of NNUE evaluation, which is useful to verify consistency between the engine and the NNUE trainer. closes https://github.com/official-stockfish/Stockfish/pull/3499 No functional change
This commit is contained in:
committed by
Joost VandeVondele
parent
e044068b43
commit
9d53129075
@@ -134,7 +134,7 @@ namespace Stockfish::Eval::NNUE {
|
||||
}
|
||||
|
||||
// Evaluation function. Perform differential calculation.
|
||||
Value evaluate(const Position& pos, bool adjusted) {
|
||||
Value evaluate(const Position& pos, bool adjusted, Value lazyThreshold) {
|
||||
|
||||
// We manually align the arrays on the stack because with gcc < 9.3
|
||||
// overaligning stack variables with alignas() doesn't work correctly.
|
||||
@@ -158,7 +158,7 @@ namespace Stockfish::Eval::NNUE {
|
||||
ASSERT_ALIGNED(buffer, alignment);
|
||||
|
||||
const std::size_t bucket = (pos.count<ALL_PIECES>() - 1) / 4;
|
||||
const auto [psqt, lazy] = featureTransformer->transform(pos, transformedFeatures, bucket);
|
||||
const auto [psqt, lazy] = featureTransformer->transform(pos, transformedFeatures, bucket, lazyThreshold);
|
||||
|
||||
if (lazy)
|
||||
return static_cast<Value>(psqt / OutputScale);
|
||||
|
||||
@@ -124,8 +124,6 @@ namespace Stockfish::Eval::NNUE {
|
||||
// Number of output dimensions for one side
|
||||
static constexpr IndexType HalfDimensions = TransformedFeatureDimensions;
|
||||
|
||||
static constexpr int LazyThreshold = 1400;
|
||||
|
||||
#ifdef VECTOR
|
||||
static constexpr IndexType TileHeight = NumRegs * sizeof(vec_t) / 2;
|
||||
static constexpr IndexType PsqtTileHeight = NumPsqtRegs * sizeof(psqt_vec_t) / 4;
|
||||
@@ -171,7 +169,7 @@ namespace Stockfish::Eval::NNUE {
|
||||
}
|
||||
|
||||
// Convert input features
|
||||
std::pair<std::int32_t, bool> transform(const Position& pos, OutputType* output, int bucket) const {
|
||||
std::pair<std::int32_t, bool> transform(const Position& pos, OutputType* output, int bucket, Value lazyThreshold) const {
|
||||
update_accumulator(pos, WHITE);
|
||||
update_accumulator(pos, BLACK);
|
||||
|
||||
@@ -184,7 +182,7 @@ namespace Stockfish::Eval::NNUE {
|
||||
- psqtAccumulation[static_cast<int>(perspectives[1])][bucket]
|
||||
) / 2;
|
||||
|
||||
if (abs(psqt) > LazyThreshold * OutputScale)
|
||||
if (abs(psqt) > (int)lazyThreshold * OutputScale)
|
||||
return { psqt, true };
|
||||
|
||||
#if defined(USE_AVX512)
|
||||
|
||||
Reference in New Issue
Block a user