Browse Source

CMSIS-DSP: Added new u32 distance tests

Christophe Favergeon 5 years ago
parent
commit
cd823b96ac

+ 1 - 0
CMSIS/DSP/Testing/CMakeLists.txt

@@ -153,6 +153,7 @@ set (NNSRC
    Source/Benchmarks/BayesF32.cpp
    Source/Benchmarks/SVMF32.cpp
    Source/Benchmarks/DistanceF32.cpp
+   Source/Benchmarks/DistanceU32.cpp
    Source/Benchmarks/StatsF64.cpp
    Source/Benchmarks/StatsF32.cpp
    Source/Benchmarks/StatsQ31.cpp

+ 30 - 0
CMSIS/DSP/Testing/Include/Benchmarks/DistanceU32.h

@@ -0,0 +1,30 @@
+#include "Test.h"
+#include "Pattern.h"
+
+#include "dsp/distance_functions.h"
+
+class DistanceU32:public Client::Suite
+    {
+        public:
+            DistanceU32(Testing::testID_t id);
+            virtual void setUp(Testing::testID_t,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr);
+            virtual void tearDown(Testing::testID_t,Client::PatternMgr *mgr);
+        private:
+            #include "DistanceU32_decl.h"
+            
+            Client::Pattern<uint32_t> inputA;
+            Client::Pattern<uint32_t> inputB;
+
+            Client::LocalPattern<uint32_t> tmpA;
+            Client::LocalPattern<uint32_t> tmpB;
+
+            int vecDim;
+
+            const uint32_t *inpA;
+            const uint32_t *inpB;
+
+            uint32_t *tmpAp;
+            uint32_t *tmpBp;
+
+
+    };

+ 103 - 0
CMSIS/DSP/Testing/Source/Benchmarks/DistanceU32.cpp

@@ -0,0 +1,103 @@
+#include "DistanceU32.h"
+#include <stdio.h>
+#include "Error.h"
+#include "Test.h"
+
+
+
+  void DistanceU32::test_dice_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_dice_distance(inpA, inpB,this->vecDim);
+       
+    } 
+
+    void DistanceU32::test_hamming_distance_u32()
+    {
+       uint32_t outp;
+
+       outp = arm_hamming_distance(inpA, inpB,this->vecDim);
+
+    } 
+
+    void DistanceU32::test_jaccard_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_jaccard_distance(inpA, inpB,this->vecDim);
+    
+    } 
+
+    void DistanceU32::test_kulsinski_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_kulsinski_distance(inpA, inpB,this->vecDim);
+         
+
+    }
+
+    void DistanceU32::test_rogerstanimoto_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_rogerstanimoto_distance(inpA, inpB,this->vecDim);
+      
+    }
+
+    void DistanceU32::test_russellrao_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_russellrao_distance(inpA, inpB,this->vecDim);
+     
+    }
+
+    void DistanceU32::test_sokalmichener_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_sokalmichener_distance(inpA, inpB,this->vecDim);
+         
+    
+    }
+
+    void DistanceU32::test_sokalsneath_distance_u32()
+    {
+       uint32_t outp;
+       outp = arm_sokalsneath_distance(inpA, inpB,this->vecDim);
+      
+    }
+
+    void DistanceU32::test_yule_distance_u32()
+    {
+       uint32_t outp;
+       
+       outp = arm_yule_distance(inpA, inpB,this->vecDim);
+      
+    }
+
+
+  
+  
+    void DistanceU32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
+    {
+        std::vector<Testing::param_t>::iterator it = paramsArgs.begin();
+        this->vecDim = *it++;
+ 
+       
+        inputA.reload(DistanceU32::INPUTA_U32_ID,mgr);
+        inputB.reload(DistanceU32::INPUTB_U32_ID,mgr);
+      
+       
+        inpA=inputA.ptr();
+        inpB=inputB.ptr();
+       
+
+    }
+
+    void DistanceU32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
+    {
+       (void)id;
+    }

+ 34 - 1
CMSIS/DSP/Testing/bench.txt

@@ -984,7 +984,7 @@ group Root {
               Output  TMPB_F32_ID : TmpB
 
               Params PARAM1_ID = {
-                  A = [16,32,64,128,256]
+                  NB = [16,32,64,128,256]
               }
 
               Functions {
@@ -999,6 +999,39 @@ group Root {
                  arm_minkowski_distance_f32:test_minkowski_distance_f32
               } -> PARAM1_ID
            }
+
+           suite Distance  U32 {
+              class = DistanceU32
+              folder = DistanceU32
+
+              ParamList {
+                  NB
+                  Summary NB
+                  Names "NB Bits"
+                  Formula "NB"
+              }
+              
+              Pattern INPUTA_U32_ID : InputBenchA1_u32.txt
+              Pattern INPUTB_U32_ID : InputBenchB1_u32.txt
+
+        
+              Params PARAM1_ID = {
+                  NB = [512, 1024, 2048, 4096, 8192]
+              }
+
+
+              Functions {
+                 arm_dice_distance:test_dice_distance_u32
+                 arm_hamming_distance:test_hamming_distance_u32
+                 arm_jaccard_distance:test_jaccard_distance_u32
+                 arm_kulsinski_distance:test_kulsinski_distance_u32
+                 arm_rogerstanimoto_distance:test_rogerstanimoto_distance_u32
+                 arm_russellrao_distance:test_russellrao_distance_u32
+                 arm_sokalmichener_distance:test_sokalmichener_distance_u32
+                 arm_sokalsneath_distance:test_sokalsneath_distance_u32
+                 arm_yule_distance:test_yule_distance_u32
+              } -> PARAM1_ID
+           }
         }
 
         group SVM  {