From 5df5f8814f532f3baec54df9be06c70d25865266 Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Thu, 13 Aug 2020 12:13:02 +0200 Subject: [PATCH] CMSIS-DSP: Added new u32 distance tests --- Testing/CMakeLists.txt | 1 + Testing/Include/Benchmarks/DistanceU32.h | 30 +++++++ Testing/Source/Benchmarks/DistanceU32.cpp | 103 ++++++++++++++++++++++ Testing/bench.txt | 35 +++++++- 4 files changed, 168 insertions(+), 1 deletion(-) create mode 100755 Testing/Include/Benchmarks/DistanceU32.h create mode 100755 Testing/Source/Benchmarks/DistanceU32.cpp diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt index 0346f680..3341598c 100644 --- a/Testing/CMakeLists.txt +++ b/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 diff --git a/Testing/Include/Benchmarks/DistanceU32.h b/Testing/Include/Benchmarks/DistanceU32.h new file mode 100755 index 00000000..d9bc7ba0 --- /dev/null +++ b/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& paramsArgs,Client::PatternMgr *mgr); + virtual void tearDown(Testing::testID_t,Client::PatternMgr *mgr); + private: + #include "DistanceU32_decl.h" + + Client::Pattern inputA; + Client::Pattern inputB; + + Client::LocalPattern tmpA; + Client::LocalPattern tmpB; + + int vecDim; + + const uint32_t *inpA; + const uint32_t *inpB; + + uint32_t *tmpAp; + uint32_t *tmpBp; + + + }; diff --git a/Testing/Source/Benchmarks/DistanceU32.cpp b/Testing/Source/Benchmarks/DistanceU32.cpp new file mode 100755 index 00000000..973369fa --- /dev/null +++ b/Testing/Source/Benchmarks/DistanceU32.cpp @@ -0,0 +1,103 @@ +#include "DistanceU32.h" +#include +#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& paramsArgs,Client::PatternMgr *mgr) + { + std::vector::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; + } diff --git a/Testing/bench.txt b/Testing/bench.txt index 0b0805eb..3b1ee94c 100755 --- a/Testing/bench.txt +++ b/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 {