From 91f3886b13dbaa7f409f2bef016e5462c223e74d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Thu, 11 Oct 2018 14:51:38 +0900 Subject: [PATCH] [enco.caffe] Emit Eval upon Pooling layers (#1833) With this commit, enco caffe frontend now emits Eval instruction for Pooling layers. Signed-off-by: Jonghyun Park --- contrib/enco/frontend/caffe/src/Frontend.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/contrib/enco/frontend/caffe/src/Frontend.cpp b/contrib/enco/frontend/caffe/src/Frontend.cpp index 12907fa..d85ce4d 100644 --- a/contrib/enco/frontend/caffe/src/Frontend.cpp +++ b/contrib/enco/frontend/caffe/src/Frontend.cpp @@ -335,9 +335,15 @@ enco::Bundle Frontend::load(void) const std::map builders; // MaxPool2D op builder - builders[PoolingMethod::Max] = [](coco::Module *m, const PoolingSpec &spec) { + builders[PoolingMethod::Max] = [ifm_obj](coco::Module *m, const PoolingSpec &spec) { + auto load = m->entity()->op()->create(); + + load->object(ifm_obj); + auto op = m->entity()->op()->create(); + op->arg(load); + op->window()->height(spec.window_height()); op->window()->width(spec.window_width()); @@ -353,9 +359,15 @@ enco::Bundle Frontend::load(void) const }; // AvgPool2D op builder - builders[PoolingMethod::Avg] = [](coco::Module *m, const PoolingSpec &spec) { + builders[PoolingMethod::Avg] = [ifm_obj](coco::Module *m, const PoolingSpec &spec) { + auto load = m->entity()->op()->create(); + + load->object(ifm_obj); + auto op = m->entity()->op()->create(); + op->arg(load); + // NOTE Caffe use static divisor on average pooling op->divisor(coco::AvgPool2D::Divisor::Static); @@ -379,10 +391,9 @@ enco::Bundle Frontend::load(void) const auto op = builder(m.get(), spec); // Create a UnitF instruction - auto ins = m->entity()->instr()->create(); + auto ins = m->entity()->instr()->create(); - ins->ifm(ifm_obj); - ins->ofm(ofm_obj); + ins->out(ofm_obj); ins->op(op); // Append the instruction to the block -- 2.7.4