[neurun] Extract TensorMarker to codegen (#2294)
author이한종/동작제어Lab(SR)/Engineer/삼성전자 <hanjoung.lee@samsung.com>
Tue, 14 Aug 2018 07:54:53 +0000 (16:54 +0900)
committer오형석/동작제어Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Tue, 14 Aug 2018 07:54:53 +0000 (16:54 +0900)
Extract TensorMarker into a separate file and move it to codegen
directory.

Signed-off-by: Hanjoung Lee <hanjoung.lee@samsung.com>
runtimes/neurun/src/codegen/TensorMarker.cc [new file with mode: 0644]
runtimes/neurun/src/codegen/TensorMarker.h [new file with mode: 0644]
runtimes/neurun/src/compilation.cc

diff --git a/runtimes/neurun/src/codegen/TensorMarker.cc b/runtimes/neurun/src/codegen/TensorMarker.cc
new file mode 100644 (file)
index 0000000..87d0e68
--- /dev/null
@@ -0,0 +1,105 @@
+#include "TensorMarker.h"
+
+namespace neurun
+{
+namespace codegen
+{
+
+void TensorMarker::visit(const ::internal::tflite::op::Conv2D::implicit::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.ofm_index);
+  mark(param.ifm_index);
+  mark(param.ker_index);
+  mark(param.bias_index);
+
+  markToCommon(node, param.ofm_index);
+  markFromCommon(node, param.ifm_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.ofm_index);
+  mark(param.ifm_index);
+
+  markToCommon(node, param.ofm_index);
+  markFromCommon(node, param.ifm_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.ofm_index);
+  mark(param.ifm_index);
+
+  markToCommon(node, param.ofm_index);
+  markFromCommon(node, param.ifm_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::Concat::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.ofm_index);
+  markToCommon(node, param.ofm_index);
+  for (auto ind : param.ifm_indexes)
+  {
+    mark(ind);
+    markFromCommon(node, ind);
+  }
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::FullyConnected::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.output_index);
+  mark(param.input_index);
+  mark(param.weight_index);
+  mark(param.bias_index);
+
+  markToCommon(node, param.output_index);
+  markFromCommon(node, param.input_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::Reshape::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.output_index);
+  mark(param.input_index);
+
+  markToCommon(node, param.output_index);
+  markFromCommon(node, param.input_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::Softmax::Node &node)
+{
+  const auto &param = node.param();
+  mark(param.output_index);
+  mark(param.input_index);
+
+  markToCommon(node, param.output_index);
+  markFromCommon(node, param.input_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node)
+{
+  // DO NOTHING
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node)
+{
+  // DO NOTHING
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node)
+{
+  // DO NOTHING
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node)
+{
+  // DO NOTHING
+}
+
+} // namespace codegen
+} // namespace neurun
diff --git a/runtimes/neurun/src/codegen/TensorMarker.h b/runtimes/neurun/src/codegen/TensorMarker.h
new file mode 100644 (file)
index 0000000..6c9b72f
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef __NEURUN_CODEGEN_TENSOR_MARKER_H__
+#define __NEURUN_CODEGEN_TENSOR_MARKER_H__
+
+#include "internal/op/NodeVisitor.h"
+#include "backend/ITensorBuilder.h"
+
+namespace neurun
+{
+namespace codegen
+{
+
+class TensorMarker : public ::internal::tflite::op::NodeVisitor
+{
+public:
+  TensorMarker(neurun::backend::ITensorBuilder &tensor_builder) : _tensor_builder{tensor_builder}
+  {
+    // DO NOTHING
+  }
+
+public:
+  void visit(const ::internal::tflite::op::Conv2D::implicit::Node &node) override;
+  void visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node) override;
+  void visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node) override;
+  void visit(const ::internal::tflite::op::Concat::Node &node) override;
+  void visit(const ::internal::tflite::op::FullyConnected::Node &node) override;
+  void visit(const ::internal::tflite::op::Reshape::Node &node) override;
+  void visit(const ::internal::tflite::op::Softmax::Node &node) override;
+  void visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node) override;
+  void visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node) override;
+  void visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node) override;
+  void visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node) override;
+
+private:
+  void mark(int32_t ind) { _tensor_builder.mark(::internal::tflite::operand::Index{ind}); }
+  void markFromCommon(const ::internal::tflite::op::Node &op, int32_t ind)
+  {
+    _tensor_builder.markFromCommon(op, ind);
+  }
+  void markToCommon(const ::internal::tflite::op::Node &op, int32_t ind)
+  {
+    _tensor_builder.markToCommon(op, ind);
+  }
+
+private:
+  neurun::backend::ITensorBuilder &_tensor_builder;
+};
+
+} // namespace codegen
+} // namespace neurun
+
+#endif // __NEURUN_CODEGEN_TENSOR_MARKER_H__
index 90eeb03..400338e 100644 (file)
 #include "codegen/IPlanBuilder.h"
 #include "codegen/BackendResolver.h"
 #include "codegen/Planner.h"
-
-class TensorMarker : public ::internal::tflite::op::NodeVisitor
-{
-public:
-  TensorMarker(neurun::backend::ITensorBuilder &tensor_builder) : _tensor_builder{tensor_builder}
-  {
-    // DO NOTHING
-  }
-
-public:
-  void visit(const ::internal::tflite::op::Conv2D::implicit::Node &node) override;
-  void visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node) override;
-  void visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node) override;
-  void visit(const ::internal::tflite::op::Concat::Node &node) override;
-  void visit(const ::internal::tflite::op::FullyConnected::Node &node) override;
-  void visit(const ::internal::tflite::op::Reshape::Node &node) override;
-  void visit(const ::internal::tflite::op::Softmax::Node &node) override;
-  void visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node) override;
-  void visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node) override;
-  void visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node) override;
-  void visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node) override;
-
-private:
-  void mark(int32_t ind) { _tensor_builder.mark(::internal::tflite::operand::Index{ind}); }
-  void markFromCommon(const ::internal::tflite::op::Node &op, int32_t ind)
-  {
-    _tensor_builder.markFromCommon(op, ind);
-  }
-  void markToCommon(const ::internal::tflite::op::Node &op, int32_t ind)
-  {
-    _tensor_builder.markToCommon(op, ind);
-  }
-
-private:
-  neurun::backend::ITensorBuilder &_tensor_builder;
-};
-
-void TensorMarker::visit(const ::internal::tflite::op::Conv2D::implicit::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.ofm_index);
-  mark(param.ifm_index);
-  mark(param.ker_index);
-  mark(param.bias_index);
-
-  markToCommon(node, param.ofm_index);
-  markFromCommon(node, param.ifm_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.ofm_index);
-  mark(param.ifm_index);
-
-  markToCommon(node, param.ofm_index);
-  markFromCommon(node, param.ifm_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.ofm_index);
-  mark(param.ifm_index);
-
-  markToCommon(node, param.ofm_index);
-  markFromCommon(node, param.ifm_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::Concat::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.ofm_index);
-  markToCommon(node, param.ofm_index);
-  for (auto ind : param.ifm_indexes)
-  {
-    mark(ind);
-    markFromCommon(node, ind);
-  }
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::FullyConnected::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.output_index);
-  mark(param.input_index);
-  mark(param.weight_index);
-  mark(param.bias_index);
-
-  markToCommon(node, param.output_index);
-  markFromCommon(node, param.input_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::Reshape::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.output_index);
-  mark(param.input_index);
-
-  markToCommon(node, param.output_index);
-  markFromCommon(node, param.input_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::Softmax::Node &node)
-{
-  const auto &param = node.param();
-  mark(param.output_index);
-  mark(param.input_index);
-
-  markToCommon(node, param.output_index);
-  markFromCommon(node, param.input_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node)
-{
-  // DO NOTHING
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node)
-{
-  // DO NOTHING
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node)
-{
-  // DO NOTHING
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node)
-{
-  // DO NOTHING
-}
-
+#include "codegen/TensorMarker.h"
 #include "codegen/PlanBuilder.h"
 
 int ANeuralNetworksCompilation::finish()
@@ -187,7 +55,7 @@ int ANeuralNetworksCompilation::finish()
   {
     const auto &op = *operations.at(n);
     auto tensor_builder = backend_resolver.getTensorBuilder(typeid(op));
-    op.accept(TensorMarker{*tensor_builder});
+    op.accept(neurun::codegen::TensorMarker{*tensor_builder});
   }
 
 #if 0 // Tensor Conversion disabled