Add layout as a member of SubGraph into KernelGenerators (#6283)
author장지섭/On-Device Lab(SR)/Engineer/삼성전자 <jiseob.jang@samsung.com>
Fri, 9 Aug 2019 06:51:24 +0000 (15:51 +0900)
committer이한종/On-Device Lab(SR)/Engineer/삼성전자 <hanjoung.lee@samsung.com>
Fri, 9 Aug 2019 06:51:24 +0000 (15:51 +0900)
This commit adds layout as a member of SubGraph into KernelGenerators.

Signed-off-by: jiseob.jang <jiseob.jang@samsung.com>
runtimes/neurun/backend/acl_cl/KernelGenerator.cc
runtimes/neurun/backend/acl_cl/KernelGenerator.h
runtimes/neurun/backend/acl_neon/KernelGenerator.cc
runtimes/neurun/backend/acl_neon/KernelGenerator.h
runtimes/neurun/backend/cpu/KernelGenerator.cc
runtimes/neurun/backend/cpu/KernelGenerator.h

index 41d0ef8..cd17302 100644 (file)
@@ -154,6 +154,7 @@ KernelGenerator::KernelGenerator(const neurun::model::Operands &ctx,
 
 void KernelGenerator::visit(const model::Subgraph &subgraph)
 {
+  _current_subg_layout = subgraph.getLayout();
   for (const auto &e : subgraph.operations())
   {
     const auto &node = *(e.node);
index 3a27c5f..db9bf41 100644 (file)
@@ -95,6 +95,7 @@ public:
 private:
   const neurun::model::Operands &_ctx;
   std::shared_ptr<TensorBuilder> _tensor_builder;
+  model::Layout _current_subg_layout;
 };
 
 } // namespace acl_cl
index 0b14e41..044366c 100644 (file)
@@ -165,6 +165,7 @@ KernelGenerator::KernelGenerator(const neurun::model::Operands &ctx,
 
 void KernelGenerator::visit(const model::Subgraph &subgraph)
 {
+  _current_subg_layout = subgraph.getLayout();
   for (const auto &e : subgraph.operations())
   {
     const auto &node = *(e.node);
index 6c49b38..32d32a1 100644 (file)
@@ -68,6 +68,7 @@ public:
 private:
   const neurun::model::Operands &_ctx;
   std::shared_ptr<TensorBuilder> _tensor_builder;
+  model::Layout _current_subg_layout;
 };
 
 } // namespace acl_neon
index 1b0c0fd..2708783 100644 (file)
@@ -53,6 +53,18 @@ KernelGenerator::KernelGenerator(const neurun::model::Operands &operand_ctx,
   // DO NOTHING
 }
 
+void KernelGenerator::visit(const model::Subgraph &subgraph)
+{
+  _current_subg_layout = subgraph.getLayout();
+  for (const auto &e : subgraph.operations())
+  {
+    const auto &node = *(e.node);
+    _tensor_builder->preVisit(node);
+    node.accept(*this);
+    _tensor_builder->postVisit(node);
+  }
+}
+
 void KernelGenerator::visit(const model::operation::Conv2DNode &node)
 {
   using model::operation::Conv2DNode;
index 1d08573..eb29773 100644 (file)
@@ -35,6 +35,7 @@ public:
   KernelGenerator(const neurun::model::Operands &ctx,
                   const std::shared_ptr<TensorBuilder> &tensor_builder);
 
+  void visit(const model::Subgraph &) override;
   void visit(const model::operation::Conv2DNode &) override;
   void visit(const model::operation::DepthwiseConv2DNode &) override;
   void visit(const model::operation::MaxPool2DNode &) override;
@@ -50,6 +51,7 @@ public:
 private:
   const neurun::model::Operands &_ctx;
   std::shared_ptr<TensorBuilder> _tensor_builder;
+  model::Layout _current_subg_layout;
 };
 
 } // namespace cpu