diff --git a/src/evaluate.h b/src/evaluate.h index d7c162cbe..4af7093e0 100644 --- a/src/evaluate.h +++ b/src/evaluate.h @@ -34,7 +34,7 @@ namespace Eval { // name of the macro or the location where this macro is defined, as it is used // in the Makefile/Fishtest. #define EvalFileDefaultNameBig "nn-9a0cc2a62c52.nnue" -#define EvalFileDefaultNameSmall "nn-37f18f62d772.nnue" +#define EvalFileDefaultNameSmall "nn-47fc8b7fff06.nnue" namespace NNUE { struct Networks; diff --git a/src/nnue/nnue_feature_transformer.h b/src/nnue/nnue_feature_transformer.h index a2cc00022..798c0fa11 100644 --- a/src/nnue/nnue_feature_transformer.h +++ b/src/nnue/nnue_feature_transformer.h @@ -155,13 +155,6 @@ class FeatureTransformer { permute<8>(threatWeights, InversePackusEpi16Order); } - inline void scale_weights(bool read) { - for (auto& w : weights) - w = read ? w * 2 : w / 2; - for (auto& b : biases) - b = read ? b * 2 : b / 2; - } - // Read network parameters bool read_parameters(std::istream& stream) { read_leb_128(stream, biases); @@ -182,9 +175,6 @@ class FeatureTransformer { permute_weights(); - if constexpr (!UseThreats) - scale_weights(true); - return !stream.fail(); } @@ -194,9 +184,6 @@ class FeatureTransformer { copy->unpermute_weights(); - if constexpr (!UseThreats) - copy->scale_weights(false); - write_leb_128(stream, copy->biases); if constexpr (UseThreats) @@ -288,7 +275,7 @@ class FeatureTransformer { constexpr IndexType NumOutputChunks = HalfDimensions / 2 / OutputChunkSize; const vec_t Zero = vec_zero(); - const vec_t One = vec_set_16(UseThreats ? 255 : 127 * 2); + const vec_t One = vec_set_16(255); const vec_t* in0 = reinterpret_cast(&(accumulation[perspectives[p]][0])); const vec_t* in1 = @@ -408,18 +395,14 @@ class FeatureTransformer { if constexpr (UseThreats) { - BiasType sum0t = threatAccumulation[static_cast(perspectives[p])][j + 0]; - BiasType sum1t = + sum0 += threatAccumulation[static_cast(perspectives[p])][j + 0]; + sum1 += threatAccumulation[static_cast(perspectives[p])][j + HalfDimensions / 2]; - sum0 = std::clamp(sum0 + sum0t, 0, 255); - sum1 = std::clamp(sum1 + sum1t, 0, 255); - } - else - { - sum0 = std::clamp(sum0, 0, 127 * 2); - sum1 = std::clamp(sum1, 0, 127 * 2); } + sum0 = std::clamp(sum0, 0, 255); + sum1 = std::clamp(sum1, 0, 255); + output[offset + j] = static_cast(unsigned(sum0 * sum1) / 512); }