From 500e8574489e348213ba0b1addf81b005de18dc2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=D0=94=D0=B8=D0=BB=D1=88=D0=BE=D0=B4=D0=B6=D0=BE=D0=BD=20?= =?utf8?q?=D0=9F=D0=BE=D1=88=D1=88=D0=BE=D0=B5=D0=B2/AI=20Tools=20Lab=20/S?= =?utf8?q?RR/Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 26 Aug 2019 12:42:39 +0300 Subject: [PATCH] [neurun]Fix HE scheduler shuffle cond and schedule ret val (#6899) * [neurun]Fix HE scheduler shuffle cond,schedule ret Also fixed returning way of Scheduler::schedule: so for it created a copy of _backend_resolver instead of moving existing one Signed-off-by: Poshshoev Dilshodzhon * Address reviews Signed-off-by: Poshshoev Dilshodzhon --- runtimes/neurun/core/src/compiler/Scheduler.cc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/runtimes/neurun/core/src/compiler/Scheduler.cc b/runtimes/neurun/core/src/compiler/Scheduler.cc index dd72cfa..3016fb6 100644 --- a/runtimes/neurun/core/src/compiler/Scheduler.cc +++ b/runtimes/neurun/core/src/compiler/Scheduler.cc @@ -195,17 +195,37 @@ std::unique_ptr Scheduler::schedule(const graph::Grap for (const auto *backend : _all_backends) { const auto exec_time = _exec_time->getOperationExecTime(backend, node.getName(), quant, size); + // if there is a record for a backend if (exec_time == _exec_time->NOT_FOUND) { profile_data_transfer = false; break; } } + // Check if profiling of data transfer is already done + for (uint32_t i = 0; i < _all_backends.size() && profile_data_transfer; ++i) + { + for (const auto *another_backend : _all_backends) + { + if (_all_backends[i] == another_backend) + { + continue; + } + const auto permute_time = + _exec_time->getPermuteTime(_all_backends[i], another_backend, quant, size); + // if permutation already was done + if (permute_time != _exec_time->NOT_FOUND) + { + profile_data_transfer = false; + break; + } + } + } if (profile_data_transfer) { scheduleShufflingBackends(); VERBOSE(Scheduler::schedule) << "task scheduling finished" << std::endl; - return nnfw::cpp14::make_unique(*_backend_resolver); + return std::move(_backend_resolver); } } @@ -215,7 +235,7 @@ std::unique_ptr Scheduler::schedule(const graph::Grap scheduleNode(rank.second); } VERBOSE(Scheduler::schedule) << "task scheduling finished" << std::endl; - return nnfw::cpp14::make_unique(*_backend_resolver); + return std::move(_backend_resolver); } int64_t Scheduler::getTime(const backend::Backend *backend, const std::string &operation, -- 2.7.4