From e95e26159d7538ebaa7bfc598028508a52b49644 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EA=B9=80=EC=88=98=EC=A7=84/On-Device=20Lab=28SR=29/Enginee?= =?utf8?q?r/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 11 Feb 2019 19:53:09 +0900 Subject: [PATCH] [neurun] Support 'quant8' for some cpu kernels (#4402) This commit supports `quant8` data type for some cpu kernels except below. - `ConvolutionLayer` : no match result - `FullyConnectedLayer` : need to revise to use `tflite` Signed-off-by: sjsujinkim sjsujin.kim@samsung.com --- runtimes/neurun/src/backend/cpu/kernel/AvgPoolLayer.cc | 3 +-- runtimes/neurun/src/backend/cpu/kernel/ConcatLayer.cc | 3 +-- runtimes/neurun/src/backend/cpu/kernel/MaxPoolLayer.cc | 3 +-- runtimes/neurun/src/backend/cpu/kernel/OperationUtils.cc | 2 +- runtimes/neurun/src/backend/cpu/kernel/SoftMaxLayer.cc | 3 +-- tests/nnapi/nnapi_gtest.skip.armv7l-linux.neurun.cpu | 12 ------------ 6 files changed, 5 insertions(+), 21 deletions(-) diff --git a/runtimes/neurun/src/backend/cpu/kernel/AvgPoolLayer.cc b/runtimes/neurun/src/backend/cpu/kernel/AvgPoolLayer.cc index 2ffdca1..43c3521 100644 --- a/runtimes/neurun/src/backend/cpu/kernel/AvgPoolLayer.cc +++ b/runtimes/neurun/src/backend/cpu/kernel/AvgPoolLayer.cc @@ -108,8 +108,7 @@ void AvgPoolLayer::run() } else if (_inputType == OperandType::TENSOR_QUANT8_ASYMM) { - throw std::runtime_error{"AvgPoolLayer : Not tested for TENSOR_QUANT8_ASYMM"}; - // averagePoolQuant8(); + averagePoolQuant8(); } } diff --git a/runtimes/neurun/src/backend/cpu/kernel/ConcatLayer.cc b/runtimes/neurun/src/backend/cpu/kernel/ConcatLayer.cc index 6250dc2..f87d7f3 100644 --- a/runtimes/neurun/src/backend/cpu/kernel/ConcatLayer.cc +++ b/runtimes/neurun/src/backend/cpu/kernel/ConcatLayer.cc @@ -129,8 +129,7 @@ void ConcatLayer::run() } else if (_inputType == OperandType::TENSOR_QUANT8_ASYMM) { - throw std::runtime_error{"ConcatLayer : Not tested for TENSOR_QUANT8_ASYMM"}; - // concatenationQuant8(); + concatenationQuant8(); } } diff --git a/runtimes/neurun/src/backend/cpu/kernel/MaxPoolLayer.cc b/runtimes/neurun/src/backend/cpu/kernel/MaxPoolLayer.cc index 1da1ad5..d2a0cdc 100644 --- a/runtimes/neurun/src/backend/cpu/kernel/MaxPoolLayer.cc +++ b/runtimes/neurun/src/backend/cpu/kernel/MaxPoolLayer.cc @@ -107,8 +107,7 @@ void MaxPoolLayer::run() } else if (_inputType == OperandType::TENSOR_QUANT8_ASYMM) { - throw std::runtime_error{"MaxPoolLayer : Not tested for TENSOR_QUANT8_ASYMM"}; - // maxPoolQuant8(); + maxPoolQuant8(); } } diff --git a/runtimes/neurun/src/backend/cpu/kernel/OperationUtils.cc b/runtimes/neurun/src/backend/cpu/kernel/OperationUtils.cc index df6e092..0c696a2 100644 --- a/runtimes/neurun/src/backend/cpu/kernel/OperationUtils.cc +++ b/runtimes/neurun/src/backend/cpu/kernel/OperationUtils.cc @@ -193,7 +193,7 @@ Shape getShape(const ::neurun::model::operand::Object &o) shape.type = static_cast(static_cast(o.typeInfo().type())); shape.dimensions = std::vector(o.shape().dims().begin(), o.shape().dims().end()); shape.scale = o.typeInfo().scale(); - // shape.offset = _offset; + shape.offset = o.typeInfo().offset(); return shape; } diff --git a/runtimes/neurun/src/backend/cpu/kernel/SoftMaxLayer.cc b/runtimes/neurun/src/backend/cpu/kernel/SoftMaxLayer.cc index 59e6b4c..6bf1d4d 100644 --- a/runtimes/neurun/src/backend/cpu/kernel/SoftMaxLayer.cc +++ b/runtimes/neurun/src/backend/cpu/kernel/SoftMaxLayer.cc @@ -166,8 +166,7 @@ void SoftMaxLayer::run() } else if (_inputType == OperandType::TENSOR_QUANT8_ASYMM) { - throw std::runtime_error{"SoftMaxLayer : Not tested for TENSOR_QUANT8_ASYMM"}; - // softmaxQuant8(); + softmaxQuant8(); } } diff --git a/tests/nnapi/nnapi_gtest.skip.armv7l-linux.neurun.cpu b/tests/nnapi/nnapi_gtest.skip.armv7l-linux.neurun.cpu index 352e7da..eed2c98 100644 --- a/tests/nnapi/nnapi_gtest.skip.armv7l-linux.neurun.cpu +++ b/tests/nnapi/nnapi_gtest.skip.armv7l-linux.neurun.cpu @@ -22,13 +22,6 @@ ValidationTestExecution.StartCompute ValidationTestExecution.EventWait GeneratedTests.add* GeneratedTests.argmax* -GeneratedTests.avg_pool_quant8_1 -GeneratedTests.avg_pool_quant8_2 -GeneratedTests.avg_pool_quant8_3 -GeneratedTests.avg_pool_quant8_4 -GeneratedTests.concat_quant8_1 -GeneratedTests.concat_quant8_2 -GeneratedTests.concat_quant8_3 GeneratedTests.conv_quant8_channels GeneratedTests.conv_quant8_channels_weights_as_inputs GeneratedTests.conv_quant8_large @@ -56,9 +49,6 @@ GeneratedTests.logical_or_ex* GeneratedTests.logistic* GeneratedTests.lsh_projection* GeneratedTests.lstm* -GeneratedTests.max_pool_quant8_1 -GeneratedTests.max_pool_quant8_2 -GeneratedTests.max_pool_quant8_3 GeneratedTests.mobilenet* GeneratedTests.mul* GeneratedTests.neg* @@ -94,9 +84,7 @@ GeneratedTests.topk_v2* # Unhandled exception GeneratedTests.fully_connected* # Unexpected result -GeneratedTests.avg_pool_quant8_5 GeneratedTests.conv_quant8_2 -GeneratedTests.max_pool_quant8_4 GeneratedTests.softmax* GeneratedTests.split* GeneratedTests.transpose_conv* -- 2.7.4