From 84f44935d84a2c06c6d4cd6b989dca2c7394b490 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=9C=A4=EC=A7=80=EC=98=81/On-Device=20Lab=28SR=29/Staff?= =?utf8?q?=20Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Tue, 5 Mar 2019 14:45:34 +0900 Subject: [PATCH] [neurun] Remove OP macro of StageGenerator in backends (#4526) The OP macro forces all operation to be implemented. But each operation is meaningful only when the operation is actually implemented. If backend does not have the operation, neurun can use a different backend. Remove dummy definition and add default throw function Signed-off-by: Jiyoung Yun --- runtimes/neurun/src/backend/acl_cl/StageGenerator.cc | 10 ---------- runtimes/neurun/src/backend/acl_cl/StageGenerator.h | 17 +++++++++++++---- runtimes/neurun/src/backend/cpu/StageGenerator.cc | 16 ---------------- runtimes/neurun/src/backend/cpu/StageGenerator.h | 14 ++++++++++---- runtimes/neurun/src/backend/interface/IStageGenerator.h | 7 +++++-- 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc b/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc index d84c5ad..220b15f 100644 --- a/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc +++ b/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc @@ -1093,11 +1093,6 @@ void StageGenerator::visit(const model::operation::StridedSliceNode &node) }); } -void StageGenerator::visit(const model::operation::PermuteNode & /* node */) -{ - throw "Unsupported"; -} - void StageGenerator::visit(const model::operation::AddNode &node) { const auto output_index{node.getOutputs().at(0)}; @@ -1217,11 +1212,6 @@ void StageGenerator::visit(const model::operation::SubNode &node) }); } -void StageGenerator::visit(const model::operation::LogisticNode &) -{ - throw std::runtime_error("LogisticNode for acl_cl is not implemented yet"); -} - } // namespace acl_cl } // namespace backend } // namespace neurun diff --git a/runtimes/neurun/src/backend/acl_cl/StageGenerator.h b/runtimes/neurun/src/backend/acl_cl/StageGenerator.h index 1dac259..e6e1a90 100644 --- a/runtimes/neurun/src/backend/acl_cl/StageGenerator.h +++ b/runtimes/neurun/src/backend/acl_cl/StageGenerator.h @@ -37,10 +37,19 @@ public: virtual std::shared_ptr tensor_builder() override { return _tensor_builder; } -#define OP(InternalName, IsNnApi, NnApiName) \ - virtual void visit(const model::operation::InternalName &) override; -#include "model/operation/Op.lst" -#undef OP + virtual void visit(const model::operation::Conv2DNode &) override; + virtual void visit(const model::operation::DepthwiseConv2DNode &) override; + virtual void visit(const model::operation::MaxPool2DNode &) override; + virtual void visit(const model::operation::AvgPool2DNode &) override; + virtual void visit(const model::operation::ConcatNode &) override; + virtual void visit(const model::operation::FullyConnectedNode &) override; + virtual void visit(const model::operation::MulNode &) override; + virtual void visit(const model::operation::ReshapeNode &) override; + virtual void visit(const model::operation::TanhNode &) override; + virtual void visit(const model::operation::SoftmaxNode &) override; + virtual void visit(const model::operation::StridedSliceNode &) override; + virtual void visit(const model::operation::AddNode &) override; + virtual void visit(const model::operation::SubNode &) override; private: const neurun::model::operand::Set &_ctx; diff --git a/runtimes/neurun/src/backend/cpu/StageGenerator.cc b/runtimes/neurun/src/backend/cpu/StageGenerator.cc index 56f5348..4ec98f8 100644 --- a/runtimes/neurun/src/backend/cpu/StageGenerator.cc +++ b/runtimes/neurun/src/backend/cpu/StageGenerator.cc @@ -651,18 +651,6 @@ void StageGenerator::visit(const model::operation::SoftmaxNode &node) }); } -void StageGenerator::visit(const model::operation::StridedSliceNode &) -{ - throw std::runtime_error("StridedSliceNode for cpu is not implemented yet."); -} - -void StageGenerator::visit(const model::operation::TanhNode &) { throw std::runtime_error("NYI"); } - -void StageGenerator::visit(const model::operation::LogisticNode &) -{ - throw std::runtime_error("LogisticNode for cpu is not implemented yet"); -} - void StageGenerator::visit(const model::operation::PermuteNode &node) { const auto output_index{node.getOutputs().at(0)}; @@ -706,10 +694,6 @@ void StageGenerator::visit(const model::operation::PermuteNode &node) }); } -void StageGenerator::visit(const model::operation::AddNode &) { throw std::runtime_error("NYI"); } - -void StageGenerator::visit(const model::operation::SubNode &) { throw std::runtime_error("NYI"); } - } // namespace neurun } // namespace backend } // namespace cpu diff --git a/runtimes/neurun/src/backend/cpu/StageGenerator.h b/runtimes/neurun/src/backend/cpu/StageGenerator.h index 6a0e387..c6915f7 100644 --- a/runtimes/neurun/src/backend/cpu/StageGenerator.h +++ b/runtimes/neurun/src/backend/cpu/StageGenerator.h @@ -38,10 +38,16 @@ public: virtual std::shared_ptr tensor_builder() override { return _tensor_builder; } -#define OP(InternalName, IsNnApi, NnApiName) \ - virtual void visit(const model::operation::InternalName &) override; -#include "model/operation/Op.lst" -#undef OP + virtual void visit(const model::operation::Conv2DNode &); + virtual void visit(const model::operation::DepthwiseConv2DNode &); + virtual void visit(const model::operation::MaxPool2DNode &); + virtual void visit(const model::operation::AvgPool2DNode &); + virtual void visit(const model::operation::ConcatNode &); + virtual void visit(const model::operation::FullyConnectedNode &); + virtual void visit(const model::operation::MulNode &); + virtual void visit(const model::operation::ReshapeNode &); + virtual void visit(const model::operation::SoftmaxNode &); + virtual void visit(const model::operation::PermuteNode &); private: const neurun::model::operand::Set &_ctx; diff --git a/runtimes/neurun/src/backend/interface/IStageGenerator.h b/runtimes/neurun/src/backend/interface/IStageGenerator.h index 1935676..71a39b8 100644 --- a/runtimes/neurun/src/backend/interface/IStageGenerator.h +++ b/runtimes/neurun/src/backend/interface/IStageGenerator.h @@ -51,8 +51,11 @@ public: virtual std::shared_ptr tensor_builder() = 0; protected: -#define OP(InternalName, IsNnApi, NnApiName) \ - virtual void visit(const model::operation::InternalName &) override {} +#define OP(InternalName, IsNnApi, NnApiName) \ + virtual void visit(const model::operation::InternalName &) override \ + { \ + throw std::runtime_error("NYI"); \ + } #include "model/operation/Op.lst" #undef OP -- 2.7.4