From 27fc00623db66b79377a1af57e9b86b53def114d Mon Sep 17 00:00:00 2001 From: Rui Coelho <ruicoelhopedro@gmail.com> Date: Sun, 10 Dec 2023 18:30:01 +0000 Subject: [PATCH] Switch to 16-bit accumulators and reorder network No functional change --- ...-10427ad1e4e6.dat => nnue-e04a4f84c87d.dat | Bin 5409032 -> 5409032 bytes src/NNUE.cpp | 4 ++-- src/NNUE.hpp | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) rename nnue-10427ad1e4e6.dat => nnue-e04a4f84c87d.dat (99%) diff --git a/nnue-10427ad1e4e6.dat b/nnue-e04a4f84c87d.dat similarity index 99% rename from nnue-10427ad1e4e6.dat rename to nnue-e04a4f84c87d.dat index 8de837f7edd0a1b69c6c623c56851b064fb1b357..0dfefe45fabe3f7f1b9edf1674072d63629542da 100644 GIT binary patch delta 272 zcmWN_$u@#v0D$4sUs0wcG7}jh^OzyN44KCp!oqvrHTTdRXl?C^T59oZ9>4w~+ZvT* z3L}hT0+ZN*o!HJac40U6U@!Jz2KzCK1DL}>9Kt*f;|Px87>?rvPT~|!V*zJy7K=EC z^SFSESi&V-#xkzpDz4!=Zr~<v;WqBzF7DwzR`381@d%HxiYIuA0c&`M=XimaSjQ{8 k#v8oFJG{pSe8eYwZurvrj!NMpe1_Ohh<@Li@2{!!Ki&6jdjJ3c delta 267 zcmWN_$uhzL0Knmq{`!?IOR|-nNVZ5JYqDfXPt-KcZ@Tgfrn`%W@I+=@boee`=i?{T z>1o&7Z=a3kSMV2kj|VNJPeRf!VF_eFBGUV)#AHy0WLQRIRN^uw<1!(Wl8`A$%CyYL ztjx*0q$Dj1vM5WkEGx1qYqBmIl95f>lB{e?PIhEh_GDiUBrk_@Bn3H^qLk!BPUTF> laxNEgDOYkWH&T&Xsmh()%Y!^hO`hagUb?*gem5IL{{fXvM6Un< diff --git a/src/NNUE.cpp b/src/NNUE.cpp index b5baffc..fc23e65 100644 --- a/src/NNUE.cpp +++ b/src/NNUE.cpp @@ -151,8 +151,8 @@ namespace NNUE for (std::size_t i = 0; i < NUM_ACCUMULATORS; i++) { // Clipped ReLU on the accumulators - int stm_acc = std::clamp(stm.m_net[i], 0, SCALE_FACTOR); - int ntm_acc = std::clamp(ntm.m_net[i], 0, SCALE_FACTOR); + int stm_acc = std::clamp(stm.m_net[i], int16_t(0), SCALE_FACTOR); + int ntm_acc = std::clamp(ntm.m_net[i], int16_t(0), SCALE_FACTOR); // Net output int j = i + NUM_ACCUMULATORS; diff --git a/src/NNUE.hpp b/src/NNUE.hpp index 1c17f96..ddf2e9b 100644 --- a/src/NNUE.hpp +++ b/src/NNUE.hpp @@ -2,15 +2,15 @@ #include "Types.hpp" -#define NNUE_Default_File "nnue-10427ad1e4e6.dat" +#define NNUE_Default_File "nnue-e04a4f84c87d.dat" namespace NNUE { using Weight = int16_t; - using Feature = int; - constexpr int SCALE_FACTOR = 1024; + using Feature = uint16_t; + constexpr int16_t SCALE_FACTOR = 1024; constexpr std::size_t NUM_FEATURES = 20480; constexpr std::size_t NUM_ACCUMULATORS = 128; constexpr std::size_t NUM_MAX_ACTIVE_FEATURES = 30; @@ -18,8 +18,8 @@ namespace NNUE struct Net { - Weight m_psqt[NUM_FEATURES][NUM_BUCKETS]; Weight m_sparse_layer[NUM_FEATURES][NUM_ACCUMULATORS]; + Weight m_psqt[NUM_FEATURES][NUM_BUCKETS]; Weight m_bias[NUM_ACCUMULATORS]; Weight m_dense[NUM_BUCKETS][2 * NUM_ACCUMULATORS]; Weight m_dense_bias[NUM_BUCKETS]; @@ -27,8 +27,8 @@ namespace NNUE class Accumulator { - int m_net[NUM_ACCUMULATORS]; - int m_psqt[NUM_BUCKETS]; + int16_t m_net[NUM_ACCUMULATORS]; + int16_t m_psqt[NUM_BUCKETS]; public: Accumulator();