From c2f16dd7beb14b633fd7e8992f81d668ea34992f 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, 20 Sep 2018 10:09:18 +0900 Subject: [PATCH] [enco] Do NOT use reorder (in NNAPI backend) (#1589) This commit eliminates the use of reorder method (in FeatureObject) from NNAPI backend implementation. This change is prerequisite for coco IR design revision. Signed-off-by: Jonghyun Park --- contrib/enco/core/src/Transforms/Normalize.cpp | 9 ++++++++- contrib/enco/core/src/Transforms/Rewrite.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/contrib/enco/core/src/Transforms/Normalize.cpp b/contrib/enco/core/src/Transforms/Normalize.cpp index 14e88d2..ee1d080 100644 --- a/contrib/enco/core/src/Transforms/Normalize.cpp +++ b/contrib/enco/core/src/Transforms/Normalize.cpp @@ -6,6 +6,10 @@ #include #include +#include + +using nncc::foundation::make_unique; + namespace { bool aligned(const coco::FeatureObject *o, const nncc::core::ADT::feature::Layout &l) @@ -84,9 +88,12 @@ coco::FeatureObject *ShuffleGen::clone(const coco::FeatureObject *oldobj) const auto newbag = _module->entity()->bag()->create(oldbag->size()); auto newobj = _module->entity()->object()->create(oldobj->shape()); + auto new_layout = make_unique(oldobj->shape()); + + new_layout->reorder(nncc::core::ADT::feature::HWCLayout{}); newobj->bag(newbag); - newobj->reorder(); + newobj->layout(std::move(new_layout)); return newobj; } diff --git a/contrib/enco/core/src/Transforms/Rewrite.cpp b/contrib/enco/core/src/Transforms/Rewrite.cpp index 69383d2..d059fd5 100644 --- a/contrib/enco/core/src/Transforms/Rewrite.cpp +++ b/contrib/enco/core/src/Transforms/Rewrite.cpp @@ -3,11 +3,15 @@ #include #include +#include + #include using namespace nncc::core::ADT; using nncc::core::ADT::feature::num_elements; +using nncc::foundation::make_unique; + namespace { @@ -85,9 +89,12 @@ void AvgPoolRewritePass::runOnModule(coco::Module *m) const auto pad_shape = shape_xform(avgpool->pad()).forward(ifm_obj->shape()); auto pad_bag = m->entity()->bag()->create(num_elements(pad_shape)); auto pad_obj = m->entity()->object()->create(pad_shape); + auto pad_layout = make_unique(pad_shape); + + pad_layout->reorder(feature::HWCLayout{}); pad_obj->bag(pad_bag); - pad_obj->reorder(); + pad_obj->layout(std::move(pad_layout)); auto pad_op = m->entity()->op()->create(); -- 2.7.4