[neurun/interp] Use model opcode enum (#8999)
author오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Mon, 18 Nov 2019 06:09:19 +0000 (15:09 +0900)
committer이한종/On-Device Lab(SR)/Engineer/삼성전자 <hanjoung.lee@samsung.com>
Mon, 18 Nov 2019 06:09:19 +0000 (15:09 +0900)
Remove interpreter internal opcode enum and use model opcode enum neurun::model::OpCode

Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
runtime/neurun/core/src/exec/interp/Interpreter.cc

index 5eb59f0..76f9ee0 100644 (file)
@@ -39,34 +39,27 @@ namespace interp
 class OperationExecutor : model::OperationVisitor
 {
 public:
-#define OP(InternalName) InternalName,
-  enum class NodeName
-  {
-#include "model/Operations.lst"
-  };
-#undef OP
-
   struct NodeNameHash
   {
-    size_t operator()(::neurun::exec::interp::OperationExecutor::NodeName value) const noexcept
+    size_t operator()(model::OpCode opcode) const noexcept
     {
-      using type = typename std::underlying_type<NodeName>::type;
-      return std::hash<type>()(static_cast<type>(value));
+      using type = typename std::underlying_type<model::OpCode>::type;
+      return std::hash<type>()(static_cast<type>(opcode));
     }
   };
 
 public:
   OperationExecutor(ExecEnv *env) : _env{env}
   {
-    _kernels[NodeName::Add] = getAdd();
-    _kernels[NodeName::Conv2D] = getConv2D();
-    _kernels[NodeName::MaxPool2D] = getMaxPool2D();
-    _kernels[NodeName::Concat] = getConcat();
-    _kernels[NodeName::AvgPool2D] = getAvgPool2D();
-    _kernels[NodeName::FullyConnected] = getFullyConnected();
-    _kernels[NodeName::Softmax] = getSoftMax();
-    _kernels[NodeName::Reshape] = getReshape();
-    _kernels[NodeName::DepthwiseConv2D] = getDepthwiseConv();
+    _kernels[model::OpCode::Add] = getAdd();
+    _kernels[model::OpCode::Conv2D] = getConv2D();
+    _kernels[model::OpCode::MaxPool2D] = getMaxPool2D();
+    _kernels[model::OpCode::Concat] = getConcat();
+    _kernels[model::OpCode::AvgPool2D] = getAvgPool2D();
+    _kernels[model::OpCode::FullyConnected] = getFullyConnected();
+    _kernels[model::OpCode::Softmax] = getSoftMax();
+    _kernels[model::OpCode::Reshape] = getReshape();
+    _kernels[model::OpCode::DepthwiseConv2D] = getDepthwiseConv();
   }
 
   void execute(const model::OperationIndex &idx)
@@ -81,18 +74,18 @@ private:
 #define OP(InternalName)                                                  \
   virtual void visit(const model::operation::InternalName &node) override \
   {                                                                       \
-    if (_kernels[NodeName::InternalName]->prepare != nullptr)             \
+    if (_kernels[model::OpCode::InternalName]->prepare != nullptr)        \
     {                                                                     \
-      _kernels[NodeName::InternalName]->prepare(_env, node);              \
+      _kernels[model::OpCode::InternalName]->prepare(_env, node);         \
     }                                                                     \
-    _kernels[NodeName::InternalName]->invoke(_env, node);                 \
+    _kernels[model::OpCode::InternalName]->invoke(_env, node);            \
   }
 #include "model/Operations.lst"
 #undef OP
 
 private:
   ExecEnv *_env;
-  std::unordered_map<NodeName, OpKernel *, NodeNameHash> _kernels;
+  std::unordered_map<model::OpCode, OpKernel *, NodeNameHash> _kernels;
 };
 
 void Interpreter::run()