diff options
author | 장지섭/On-Device Lab(SR)/Engineer/삼성전자 <jiseob.jang@samsung.com> | 2019-09-17 20:48:29 +0900 |
---|---|---|
committer | 오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com> | 2019-09-17 20:48:29 +0900 |
commit | 0d47a522ac5014465cb42715ef65e8ed9ff7fe03 (patch) | |
tree | 452bcceb5ae47adb6f3416fdad096f78e649eba9 | |
parent | 28b2016e8983a8fc03b4db4c631c15c3a7ac819e (diff) | |
download | nnfw-0d47a522ac5014465cb42715ef65e8ed9ff7fe03.tar.gz nnfw-0d47a522ac5014465cb42715ef65e8ed9ff7fe03.tar.bz2 nnfw-0d47a522ac5014465cb42715ef65e8ed9ff7fe03.zip |
Make to support Dequantize op for acl neon (#7522)
This commit makes to support Dequantize op for acl neon.
Signed-off-by: jiseob.jang <jiseob.jang@samsung.com>
-rw-r--r-- | runtimes/neurun/backend/acl_neon/KernelGenerator.cc | 17 | ||||
-rw-r--r-- | runtimes/neurun/backend/acl_neon/KernelGenerator.h | 1 | ||||
-rw-r--r-- | runtimes/neurun/backend/acl_neon/ShapeFixer.cc | 2 | ||||
-rw-r--r-- | runtimes/neurun/backend/acl_neon/ShapeFixer.h | 1 |
4 files changed, 21 insertions, 0 deletions
diff --git a/runtimes/neurun/backend/acl_neon/KernelGenerator.cc b/runtimes/neurun/backend/acl_neon/KernelGenerator.cc index a05fa8b30..169b884dd 100644 --- a/runtimes/neurun/backend/acl_neon/KernelGenerator.cc +++ b/runtimes/neurun/backend/acl_neon/KernelGenerator.cc @@ -314,6 +314,23 @@ void KernelGenerator::visit(const model::operation::DepthwiseConv2DNode &node) } } +void KernelGenerator::visit(const model::operation::DequantizeNode &node) +{ + const auto output_index{node.getOutputs().at(0)}; + const auto input_index{node.getInputs().at(model::operation::DequantizeNode::Input::INPUT)}; + + auto output_alloc = _tensor_builder->at(output_index).get(); + auto input_alloc = _tensor_builder->at(input_index).get(); + + auto fn = nnfw::cpp14::make_unique<::arm_compute::NEDequantizationLayer>(); + + fn->configure(input_alloc->handle(), output_alloc->handle()); + + auto acl_fn = asAclFunction(std::move(fn)); + + _execution_builder->append(std::move(acl_fn)); +} + void KernelGenerator::visit(const model::operation::MaxPool2DNode &node) { const auto ofm_index{node.getOutputs().at(0)}; diff --git a/runtimes/neurun/backend/acl_neon/KernelGenerator.h b/runtimes/neurun/backend/acl_neon/KernelGenerator.h index 64e8a6df1..ee28061ae 100644 --- a/runtimes/neurun/backend/acl_neon/KernelGenerator.h +++ b/runtimes/neurun/backend/acl_neon/KernelGenerator.h @@ -40,6 +40,7 @@ public: void visit(const model::operation::ArgMaxNode &) override; void visit(const model::operation::Conv2DNode &) override; void visit(const model::operation::DepthwiseConv2DNode &) override; + void visit(const model::operation::DequantizeNode &) override; void visit(const model::operation::MaxPool2DNode &) override; void visit(const model::operation::MeanNode &) override; void visit(const model::operation::AvgPool2DNode &) override; diff --git a/runtimes/neurun/backend/acl_neon/ShapeFixer.cc b/runtimes/neurun/backend/acl_neon/ShapeFixer.cc index da5287648..1ce27ef39 100644 --- a/runtimes/neurun/backend/acl_neon/ShapeFixer.cc +++ b/runtimes/neurun/backend/acl_neon/ShapeFixer.cc @@ -67,6 +67,8 @@ void ShapeFixer::visit(const model::operation::Conv2DNode &) { /* DO NOTHING */} void ShapeFixer::visit(const model::operation::DepthwiseConv2DNode &) { /* DO NOTHING */} +void ShapeFixer::visit(const model::operation::DequantizeNode &) { /* DO NOTHING */} + void ShapeFixer::visit(const model::operation::MaxPool2DNode &) { /* DO NOTHING */} void ShapeFixer::visit(const model::operation::MeanNode &) { /* DO NOTHING */} diff --git a/runtimes/neurun/backend/acl_neon/ShapeFixer.h b/runtimes/neurun/backend/acl_neon/ShapeFixer.h index 1d3466334..f50efdc1a 100644 --- a/runtimes/neurun/backend/acl_neon/ShapeFixer.h +++ b/runtimes/neurun/backend/acl_neon/ShapeFixer.h @@ -41,6 +41,7 @@ public: void visit(const model::operation::ArgMaxNode &) override; void visit(const model::operation::Conv2DNode &) override; void visit(const model::operation::DepthwiseConv2DNode &) override; + void visit(const model::operation::DequantizeNode &) override; void visit(const model::operation::MaxPool2DNode &) override; void visit(const model::operation::MeanNode &) override; void visit(const model::operation::AvgPool2DNode &) override; |