From: 박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 Date: Thu, 12 Apr 2018 04:50:53 +0000 (+0900) Subject: [Pure ACL Runtime] Set Conv2D strides (#608) X-Git-Tag: 0.1~301 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d8256278436bd10e0f5ca59b27db17715f3475d4;p=platform%2Fcore%2Fml%2Fnnfw.git [Pure ACL Runtime] Set Conv2D strides (#608) This commit set Conv2D stride parameter with values read from operands. Signed-off-by: Jonghyun Park --- diff --git a/tools/nnapi_bindings/bindings/pure_arm_compute/src/compilation.cc b/tools/nnapi_bindings/bindings/pure_arm_compute/src/compilation.cc index 0d75cd0..e3479f9 100644 --- a/tools/nnapi_bindings/bindings/pure_arm_compute/src/compilation.cc +++ b/tools/nnapi_bindings/bindings/pure_arm_compute/src/compilation.cc @@ -87,6 +87,9 @@ void Planner::visit(const ::internal::tflite::op::Conv2D::implicit::Node &node) const ::internal::tflite::operand::Index ker_index{node.param().ker_index}; const ::internal::tflite::operand::Index bias_index{node.param().bias_index}; + const ::internal::tflite::operand::Index vstride_index{node.param().vstride_index}; + const ::internal::tflite::operand::Index hstride_index{node.param().hstride_index}; + const auto ofm_shape = _ctx.at(ofm_index).shape().asFeature(); const auto ifm_shape = _ctx.at(ifm_index).shape().asFeature(); const auto ker_shape = _ctx.at(ker_index).shape().asKernel(); @@ -141,8 +144,8 @@ void Planner::visit(const ::internal::tflite::op::Conv2D::implicit::Node &node) param.padding.left = 0; param.padding.right = 0; - param.stride.vertical = 0; - param.stride.horizontal = 0; + param.stride.vertical = _ctx.at(vstride_index).asScala(); + param.stride.horizontal = _ctx.at(hstride_index).asScala(); auto stage = [param] (const IAllocationContext &ctx, IExecutionBuilder &builder) { 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 9378f2d..357bc4a 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 @@ -128,6 +128,7 @@ private: } // namespace internal #include +#include namespace internal { @@ -156,6 +157,16 @@ public: data(std::unique_ptr(new T{std::forward(args)...})); } +public: + template T asScala(void) const + { + assert((_shape.rank() == 0) || ((_shape.rank() == 1) && (_shape.dim(0) == 1))); + assert(_data != nullptr); + assert((_data->base() != nullptr) && (_data->size() == sizeof(T))); + + return *(reinterpret_cast(_data->base())); + } + private: const Shape _shape; std::unique_ptr _data;