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();