CMSIS-NN: Helium version of arm_avgpool_s8

pull/19/head
Christophe Favergeon 6 years ago committed by Christophe Favergeon
parent d9ca41ce8d
commit efcc87d950

@ -24,4 +24,16 @@ class FullyConnectedBench:public Client::Suite
q7_t *outp; q7_t *outp;
q7_t *refp; q7_t *refp;
q15_t *tempp; q15_t *tempp;
};
int32_t output_mult = 1073741824;
int16_t output_shift = -1;
int32_t filter_offset = 1;
int32_t input_offset = 1;
int32_t output_offset = -1;
int32_t act_min =-128;
int32_t act_max= 127;
int32_t nb_batches=1;
int32_t rowDim;
int32_t colDim;
};

@ -5,33 +5,24 @@
void FullyConnectedBench::test_fully_connected_tflite_s8() void FullyConnectedBench::test_fully_connected_tflite_s8()
{ {
for(int i=0; i < this->repeatNb; i++)
int32_t output_mult = 1073741824;
int16_t output_shift = -1;
int32_t filter_offset = 1;
int32_t input_offset = 1;
int32_t output_offset = -1;
for(int i=0; i < this->repeatNb; i++)
{ {
arm_fully_connected_s8((int8_t*)inp arm_fully_connected_s8((int8_t*)this->inp
,(const int8_t*)weightp ,(const int8_t*)this->weightp
,input.nbSamples() ,colDim
,output.nbSamples() ,rowDim
,1 ,nb_batches
,input_offset ,input_offset
,filter_offset ,filter_offset
,output_mult ,output_mult
,output_shift ,output_shift
,output_offset ,output_offset
,(const int32_t*)biasp ,(const int32_t*)this->biasp
,(int8_t*)outp ,(int8_t*)this->outp
,-128 ,act_min
,127 ,act_max
,tempp ,this->tempp
); );
} }
} }
@ -45,23 +36,35 @@
this->repeatNb = *it; this->repeatNb = *it;
input.reload(FullyConnectedBench::INPUT1_S8_ID,mgr); output_mult = 1077969154;
bias.reload(FullyConnectedBench::BIAS1_S8_ID,mgr); output_shift = 2;
weight.reload(FullyConnectedBench::WEIGHT1_S8_ID,mgr); filter_offset = 0;
input_offset = 0;
output_offset = 1;
act_min =-128;
act_max= 127;
ref.reload(FullyConnectedBench::REF1_S8_ID,mgr);
nb_batches=8;
colDim=8;
output.create(ref.nbSamples(),FullyConnectedBench::OUTPUT_S8_ID,mgr); rowDim=5;
temp.create(input.nbSamples(),FullyConnectedBench::TEMP_S16_ID,mgr);
input.reload(FullyConnectedBench::INPUT13_S8_ID,mgr);
bias.reload(FullyConnectedBench::BIAS13_S8_ID,mgr);
weight.reload(FullyConnectedBench::WEIGHT13_S8_ID,mgr);
//ref.reload(FullyConnectedBench::REF13_S8_ID,mgr);
inp=input.ptr(); output.create(ref.nbSamples(),FullyConnectedBench::OUTPUT_S8_ID,mgr);
biasp=bias.ptr(); temp.create(colDim,FullyConnectedBench::TEMP_S16_ID,mgr);
weightp=weight.ptr();
outp=output.ptr();
refp=ref.ptr();
tempp=temp.ptr();
this->inp=input.ptr();
this->biasp=bias.ptr();
this->weightp=weight.ptr();
this->outp=output.ptr();
//this->refp=ref.ptr();
this->tempp=temp.ptr();
} }
void FullyConnectedBench::tearDown(Testing::testID_t id,Client::PatternMgr *mgr) void FullyConnectedBench::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)

@ -9,7 +9,7 @@
void PoolingBench::test_avgpool_s8() void PoolingBench::test_avgpool_s8()
{ {
for(int i=0; i < this->repeatNb; i++) //for(int i=0; i < this->repeatNb; i++)
{ {
arm_avgpool_s8( arm_avgpool_s8(
DIM_IN_Y, DIM_IN_Y,
@ -31,6 +31,8 @@
} }
//ASSERT_EQ(this->ref,this->output);
} }

@ -1425,17 +1425,16 @@ group Root {
Formula "NB" Formula "NB"
} }
Pattern INPUT1_S8_ID : TestCase_1_10_4_input_1.txt Pattern INPUT13_S8_ID : TestCase_8_8_5_input_13.txt
Pattern BIAS1_S8_ID : TestCase_1_10_4_bias_1.txt Pattern BIAS13_S8_ID : TestCase_8_8_5_bias_13.txt
Pattern WEIGHT1_S8_ID : TestCase_1_10_4_weights_1.txt Pattern WEIGHT13_S8_ID : TestCase_8_8_5_weights_13.txt
Pattern REF13_S8_ID : TestCase_8_8_5_output_13.txt
Pattern REF1_S8_ID : TestCase_1_10_4_output_1.txt
Output OUTPUT_S8_ID : Output Output OUTPUT_S8_ID : Output
Output TEMP_S16_ID : Temp Output TEMP_S16_ID : Temp
Params PARAM1_ID = { Params PARAM1_ID = {
NB = [10,20,100,200] NB = [10,20,40,50]
} }
Functions { Functions {
@ -1462,7 +1461,7 @@ group Root {
Output TEMPINPUT_S8_ID : TempInput Output TEMPINPUT_S8_ID : TempInput
Params PARAM1_ID = { Params PARAM1_ID = {
NB = [10,20,100,200] NB = [1]
} }
Functions { Functions {

Loading…
Cancel
Save