[enco] Build ANN ReLU operator (#1298)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 3 Sep 2018 23:24:52 +0000 (08:24 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 3 Sep 2018 23:24:52 +0000 (08:24 +0900)
This commit revises ANNGroupBuilder and ANNOpBuilder to recognize ReLU
operation.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/enco/core/src/Transforms/Split.cpp

index 95664e0..2236e00 100644 (file)
@@ -58,6 +58,12 @@ Compatibility ANNGroupBuilder::kind(const coco::Instr *ins) const
       // TODO Check data layout
       return true;
     }
+
+    bool visit(const coco::ReLU *) override
+    {
+      // TODO Check data layout
+      return true;
+    }
   };
 
   return ins->accept(CompatibilityCheck{}) ? COMPATIBLE : INCOMPATIBLE;
@@ -225,6 +231,13 @@ public:
                             {ifm, ker, bias, left, right, top, bottom, hstride, vstride, fuse},
                             {ofm});
     }
+    else if (unit->op()->asReLU())
+    {
+      auto ifm = _binder->addOperand<float>(unit->ifm());
+      auto ofm = _binder->addOperand<float>(unit->ofm());
+
+      _binder->addOperation(ann::Operation::Code::RELU, {ifm}, {ofm});
+    }
     else
     {
       throw std::runtime_error{"Not supported, yet"};