From: Дилшоджон Пошшоев/AI Tools Lab /SRR/Engineer/삼성전자 Date: Mon, 26 Aug 2019 09:42:39 +0000 (+0300) Subject: [neurun]Fix HE scheduler shuffle cond and schedule ret val (#6899) X-Git-Tag: accepted/tizen/unified/20190903.052428~128 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=500e8574489e348213ba0b1addf81b005de18dc2;p=platform%2Fcore%2Fml%2Fnnfw.git [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 --- 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,