From d293fab136f39e83a11a8e81dafee5dd4325d85e 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: Mon, 15 Oct 2018 11:22:58 +0900 Subject: [PATCH] [enco] Use Conv2D kernel data without modification (#1858) This commit revises Split pass to use Conv2D kernel data that coco::Data provides without modification (to reduce peak memory consumption). Signed-off-by: Jonghyun Park --- contrib/enco/core/src/Transforms/Split.cpp | 31 ++++-------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/contrib/enco/core/src/Transforms/Split.cpp b/contrib/enco/core/src/Transforms/Split.cpp index aad7a47..38e25c3 100644 --- a/contrib/enco/core/src/Transforms/Split.cpp +++ b/contrib/enco/core/src/Transforms/Split.cpp @@ -81,35 +81,12 @@ public: // Fill kernel data { - auto obj = _ker; - auto shape = obj->shape(); - auto len = nncc::core::ADT::kernel::num_elements(shape); - - auto ovl = data->f32()->read(obj); - assert(ovl != nullptr); + auto ker_bag = _ker->bag(); + auto ker_weight = data->f32()->weight(ker_bag); - // Flatten? - std::vector values; - values.resize(len); + assert(ker_weight.data() != nullptr); - for (uint32_t n = 0; n < shape.count(); ++n) - { - for (uint32_t ch = 0; ch < shape.depth(); ++ch) - { - for (uint32_t row = 0; row < shape.height(); ++row) - { - for (uint32_t col = 0; col < shape.width(); ++col) - { - const static nncc::core::ADT::kernel::NHWCLayout l{}; - const auto offset = static_cast(l.offset(shape, n, ch, row, col)); - - values.at(offset) = ovl->at(n, ch, row, col); - } - } - } - } - - binder->setOperand(ker, values.begin(), values.end()); + binder->setOperand(ker, ker_weight.data(), ker_weight.data() + ker_weight.size()); } // Conv2D in coco IR has no bias, but bias is mandatory in Android NN API -- 2.7.4