From 0be658530411a564f906a5fa969bd2c027e139cf Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Senior=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Tue, 10 Apr 2018 17:41:25 +0900 Subject: [PATCH] [Pure ACL NNRT] Introduce Conv2D Param Constructor (#528) This commit introduces a constructor for implicit Conv2D Param class which initializes parameters using arrays. Signed-off-by: Jonghyun Park --- .../pure_arm_compute/src/internal/Model.cc | 43 ++++++++++++++++++++++ .../bindings/pure_arm_compute/src/internal/Model.h | 12 ++++-- .../bindings/pure_arm_compute/src/model.cc | 21 ++--------- 3 files changed, 54 insertions(+), 22 deletions(-) diff --git a/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.cc b/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.cc index 6d56e5e..78cdf97 100644 --- a/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.cc +++ b/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.cc @@ -83,6 +83,49 @@ namespace internal { namespace tflite { +namespace op +{ +namespace Conv2D +{ +namespace implicit +{ + +Param::Param(uint32_t inputCount, const uint32_t* inputs, + uint32_t outputCount, const uint32_t* outputs) +{ + assert(inputCount == 7 && outputCount == 1); + + ofm_index = outputs[0]; + + // Each input should be interpreted as follows: + // + // + // 0 -> IFM Tensor Index + // 1 -> Kernel Tensor Index + // 2 -> Bias Tensor Index + // 3 -> Padding Code (ANEURALNETWORKS_PADDING_SAME or ANEURALNETWORKS_PADDING_VALID) Index + // 4 -> Stride (width) Index + // 5 -> Stride (height) INdex + // 6 -> Activation Index + ifm_index = inputs[0]; + ker_index = inputs[1]; + bias_index = inputs[2]; + padding_index = inputs[3]; + hstride_index = inputs[4]; + vstride_index = inputs[5]; + activation_index = inputs[6]; +} + +} // namespace implicit +} // namespace Conv2D +} // namespace op +} // namespace tflite +} // namespace internal + +namespace internal +{ +namespace tflite +{ namespace operand { diff --git a/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.h b/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.h index b60f231..0e5aeea 100644 --- a/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.h +++ b/tools/nnapi_bindings/bindings/pure_arm_compute/src/internal/Model.h @@ -230,11 +230,15 @@ struct Param int32_t ker_index; int32_t bias_index; - int32_t hstride; - int32_t vstride; + int32_t hstride_index; + int32_t vstride_index; - int32_t padding; - int32_t activation; + int32_t padding_index; + int32_t activation_index; + + Param() = default; + Param(uint32_t inputCount, const uint32_t* inputs, + uint32_t outputCount, const uint32_t* outputs); }; class Node final : public op::Node diff --git a/tools/nnapi_bindings/bindings/pure_arm_compute/src/model.cc b/tools/nnapi_bindings/bindings/pure_arm_compute/src/model.cc index 1241d6b..c40f01d 100644 --- a/tools/nnapi_bindings/bindings/pure_arm_compute/src/model.cc +++ b/tools/nnapi_bindings/bindings/pure_arm_compute/src/model.cc @@ -93,28 +93,13 @@ ANeuralNetworksModel_addOperation(ANeuralNetworksModel* model, if (inputCount == 7) { - internal::tflite::op::Conv2D::implicit::Param param; - - param.ofm_index = outputs[0]; - - // Each input should be interpreted as follows: - // - // 0 -> IFM Tensor Index - // 1 -> Kernel Tensor Index - // 2 -> Bias Tensor Index - // 3 -> Padding Code (ANEURALNETWORKS_PADDING_SAME or ANEURALNETWORKS_PADDING_VALID) - // 4 -> Stride (width) - // 5 -> Stride (height) - // 6 -> Activation - param.ifm_index = inputs[0]; - param.ker_index = inputs[1]; - param.bias_index = inputs[2]; - // TODO Set hstride/vstride/padding/activation + using internal::tflite::op::Conv2D::implicit::Param; + using internal::tflite::op::Conv2D::implicit::Node; // Add 'operations' auto &operations = model->deref().operations(); - operations.emplace_back(param); + operations.emplace_back(Param{inputCount, inputs, outputCount, outputs}); } else { -- 2.7.4