From db27e4578cef28e2352e67f0a05dcdcded5ef6eb 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: Fri, 5 Oct 2018 15:25:45 +0900 Subject: [PATCH] [enco] Reduce host-side allocation (#1756) This commit eliminates unnecessary memory allocation for host (non-NNAPI) code. Signed-off-by: Jonghyun Park --- contrib/enco/core/src/CppCode.cpp | 41 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/contrib/enco/core/src/CppCode.cpp b/contrib/enco/core/src/CppCode.cpp index 5ca0195..4eb98f9 100644 --- a/contrib/enco/core/src/CppCode.cpp +++ b/contrib/enco/core/src/CppCode.cpp @@ -73,13 +73,52 @@ std::set intermediates(const enco::Code *code) // TODO Optimize this! std::set res; + auto accessed_by_host = [code](const coco::Bag *b) { + auto block_of = [](coco::Locatable *loc) -> coco::Block * { + if (auto ins = loc->loc()) + { + if (auto blk = ins->parent()) + { + return blk; + } + } + + return nullptr; + }; + + auto is_host_block = [code](const coco::Block *blk) { + return (blk) ? (code->ann()->find(blk) == nullptr) : false; + }; + + for (const auto &updater : coco::updaters(b)) + { + if (is_host_block(block_of(updater))) + { + return true; + } + } + + for (const auto &reader : coco::readers(b)) + { + if (is_host_block(block_of(reader))) + { + return true; + } + } + + return false; + }; + for (uint32_t n = 0; n < code->module()->entity()->bag()->size(); ++n) { auto bag = code->module()->entity()->bag()->at(n); if (!bag->isInput() && !bag->isOutput()) { - res.insert(bag); + if (accessed_by_host(bag)) + { + res.insert(bag); + } } } -- 2.7.4