[neurun] Replace IObject with ITensor in ACL CL backend (#9338)
authorSergei Barannikov/AI Tools Lab /SRR/Engineer/Samsung Electronics <s.barannikov@samsung.com>
Tue, 3 Dec 2019 01:10:47 +0000 (04:10 +0300)
committer오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Tue, 3 Dec 2019 01:10:47 +0000 (10:10 +0900)
Replace uses of `IObject` with `ITensor` in ACL CL backend

Signed-off-by: Sergei Barannikov <s.barannikov@samsung.com>
runtime/neurun/backend/acl_cl/KernelGenerator.cc
runtime/neurun/backend/acl_cl/kernel/ConcatLayer.cc
runtime/neurun/backend/acl_cl/kernel/ConcatLayer.h

index 6a47033..032f7d6 100644 (file)
@@ -410,19 +410,17 @@ void KernelGenerator::visit(const model::operation::Concat &node)
     return;
   }
 
-  auto output_alloc = static_cast<::neurun::backend::acl_cl::operand::Object *>(
-      _tensor_builder->wrapTensor(ofm_index).get());
+  auto output_alloc = _tensor_builder->at(ofm_index).get();
 
-  std::vector<::neurun::backend::acl_cl::operand::Object *> input_allocs;
+  std::vector<operand::ICLTensor *> input_allocs;
   for (auto &ifm_ind : input_indexes)
-    input_allocs.emplace_back(static_cast<::neurun::backend::acl_cl::operand::Object *>(
-        _tensor_builder->wrapTensor(ifm_ind).get()));
+    input_allocs.emplace_back(_tensor_builder->at(ifm_ind).get());
 
   auto fn = nnfw::cpp14::make_unique<::neurun::backend::acl_cl::kernel::ConcatLayer>();
 
   const auto rank = _ctx.at(ofm_index).shape().rank();
   const auto frontend_layout = _current_subg_layout;
-  const auto backend_layout = output_alloc->ptr()->layout();
+  const auto backend_layout = output_alloc->layout();
   const auto fixed_axis =
       acl_common::ToARMComputeAxis(rank, axis, frontend_layout, backend_layout).value();
 
index aa1fd9a..dc9b576 100644 (file)
@@ -68,12 +68,12 @@ template <typename T> bool ConcatLayer::concatenate()
 
     for (auto input : _input_allocs)
     {
-      assert(_output_alloc->ptr()->layout() == input->ptr()->layout());
-      assert(matchSizeExceptAxis(_output_alloc->ptr(), input->ptr(), _axis));
-      axis_sum += input->ptr()->info()->dimension(_axis);
+      assert(_output_alloc->layout() == input->layout());
+      assert(matchSizeExceptAxis(_output_alloc, input, _axis));
+      axis_sum += input->info()->dimension(_axis);
     }
 
-    assert(_output_alloc->ptr()->info()->dimension(_axis) == axis_sum);
+    assert(_output_alloc->info()->dimension(_axis) == axis_sum);
   }
 
   VERBOSE(Concat_RUN) << "START Concat" << std::endl;
@@ -130,9 +130,8 @@ template <typename T> bool ConcatLayer::concatenate()
   return true;
 }
 
-void ConcatLayer::configure(
-    const std::vector<::neurun::backend::acl_cl::operand::Object *> &input_allocs, int32_t axis,
-    ::neurun::backend::acl_cl::operand::Object *output_alloc)
+void ConcatLayer::configure(const std::vector<operand::ICLTensor *> &input_allocs, int32_t axis,
+                            operand::ICLTensor *output_alloc)
 {
   _input_allocs = input_allocs;
   _output_alloc = output_alloc;
@@ -144,7 +143,7 @@ void ConcatLayer::configure(
 
   _axis = axis;
 
-  _input_type = input_allocs[0]->ptr()->data_type();
+  _input_type = input_allocs[0]->data_type();
 }
 
 void ConcatLayer::run()
index ed273e2..f11b6be 100644 (file)
@@ -20,7 +20,7 @@
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/core/Types.h>
 
-#include "operand/Object.h"
+#include "operand/ICLTensor.h"
 
 namespace neurun
 {
@@ -42,9 +42,9 @@ public:
   ConcatLayer();
 
 public:
-  void configure(const std::vector<::neurun::backend::acl_cl::operand::Object *> &input_allocs,
+  void configure(const std::vector<operand::ICLTensor *> &input_allocs,
                  int32_t axis /* NNAPI tensor axis from NHWC order */,
-                 ::neurun::backend::acl_cl::operand::Object *output_alloc);
+                 operand::ICLTensor *output_alloc);
 
   void run();
 
@@ -52,8 +52,8 @@ private:
   template <typename T> bool concatenate();
 
 private:
-  std::vector<::neurun::backend::acl_cl::operand::Object *> _input_allocs;
-  ::neurun::backend::acl_cl::operand::Object *_output_alloc;
+  std::vector<operand::ICLTensor *> _input_allocs;
+  operand::ICLTensor *_output_alloc;
   int32_t _axis;
   arm_compute::DataType _input_type;
 };