From 4984fe52a7e28ba8fb5106f4913d2d01d72a3bac Mon Sep 17 00:00:00 2001 From: yeyunpeng Date: Thu, 10 Dec 2020 15:17:59 +0800 Subject: [PATCH] delete index in scheduler --- .../lite/src/runtime/agent/npu/npu_manager.cc | 3 +++ .../lite/src/runtime/agent/npu/npu_manager.h | 4 ++++ .../src/runtime/agent/npu/subgraph_npu_kernel.cc | 5 ++--- .../src/runtime/agent/npu/subgraph_npu_kernel.h | 5 ----- .../lite/src/runtime/kernel/npu/floor_npu.cc | 2 +- mindspore/lite/src/scheduler.cc | 15 ++++++++++----- mindspore/lite/src/scheduler.h | 2 +- 7 files changed, 21 insertions(+), 15 deletions(-) diff --git a/mindspore/lite/src/runtime/agent/npu/npu_manager.cc b/mindspore/lite/src/runtime/agent/npu/npu_manager.cc index 2f989e5ecc..40580307cf 100644 --- a/mindspore/lite/src/runtime/agent/npu/npu_manager.cc +++ b/mindspore/lite/src/runtime/agent/npu/npu_manager.cc @@ -188,6 +188,7 @@ int NPUManager::AddModel(void *model_buf, uint32_t size, const std::string &mode model_desc_.push_back(desc); mc_builder_->MemBufferDestroy(buffer); + index_++; return RET_OK; } @@ -214,4 +215,6 @@ int NPUManager::LoadOMModel() { } std::shared_ptr NPUManager::GetClient() { return client_; } + +int NPUManager::index() { return index_; } } // namespace mindspore::lite diff --git a/mindspore/lite/src/runtime/agent/npu/npu_manager.h b/mindspore/lite/src/runtime/agent/npu/npu_manager.h index 903bb4c1a3..010e642ded 100644 --- a/mindspore/lite/src/runtime/agent/npu/npu_manager.h +++ b/mindspore/lite/src/runtime/agent/npu/npu_manager.h @@ -43,6 +43,8 @@ class NPUManager { // provide to executor. std::shared_ptr GetClient(); + int index(); + private: void CheckSupportNPU(); @@ -53,6 +55,8 @@ class NPUManager { std::string GetExecutorPath(); private: + int index_ = 0; + bool is_npu_check_executor = false; bool is_support_npu = false; diff --git a/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.cc b/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.cc index 5d699524c5..0225ff29ce 100644 --- a/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.cc +++ b/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.cc @@ -52,7 +52,7 @@ domi::ModelBufferData *SubGraphNpuKernel::BuildIRModel() { domi::HiaiIrBuild ir_build; auto om_model_buff = new (std::nothrow) domi::ModelBufferData; if (om_model_buff == nullptr) { - MS_LOG(ERROR) << "om model buffer is nullptr."; + MS_LOG(ERROR) << "OM model buffer is nullptr."; return nullptr; } if (!ir_build.CreateModelBuff(model, *om_model_buff)) { @@ -155,9 +155,8 @@ int SubGraphNpuKernel::BuildNPUOutputOp() { return RET_OK; } -void SubGraphNpuKernel::SetIndex(int index) { this->index_ = index; } +std::string SubGraphNpuKernel::GetOMModelName() { return this->name_ + ".om"; } -std::string SubGraphNpuKernel::GetOMModelName() { return this->name_ + std::to_string(index_) + ".om"; } int SubGraphNpuKernel::Init() { model_buffer_data_ = BuildIRModel(); if (model_buffer_data_ == nullptr) { diff --git a/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.h b/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.h index c05290562b..2ed220a561 100644 --- a/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.h +++ b/mindspore/lite/src/runtime/agent/npu/subgraph_npu_kernel.h @@ -34,7 +34,6 @@ class SubGraphNpuKernel : public SubGraphKernel { const lite::InnerContext *ctx = nullptr) : SubGraphKernel(inputs, outputs, inKernels, outKernels, nodes, ctx) { subgraph_type_ = kNpuSubGraph; - this->name_ = "NpuSubGraph"; } ~SubGraphNpuKernel() override = default; @@ -56,8 +55,6 @@ class SubGraphNpuKernel : public SubGraphKernel { return RET_ERROR; } - void SetIndex(int index); - private: domi::ModelBufferData *BuildIRModel(); @@ -72,8 +69,6 @@ class SubGraphNpuKernel : public SubGraphKernel { std::string GetOMModelName(); private: - int index_; - domi::ModelBufferData *model_buffer_data_; std::vector subgraph_input_op_; diff --git a/mindspore/lite/src/runtime/kernel/npu/floor_npu.cc b/mindspore/lite/src/runtime/kernel/npu/floor_npu.cc index 1a664dfd99..4a1c84af2b 100644 --- a/mindspore/lite/src/runtime/kernel/npu/floor_npu.cc +++ b/mindspore/lite/src/runtime/kernel/npu/floor_npu.cc @@ -34,7 +34,7 @@ int FloorNPUKernel::SetNPUInputs(const std::vector &inputs, cons return RET_ERROR; } op_->set_input_x(*npu_inputs[0]); - return REK_OK; + return RET_OK; } ge::Operator *mindspore::kernel::FloorNPUKernel::GetNPUOp() { return this->op_; } diff --git a/mindspore/lite/src/scheduler.cc b/mindspore/lite/src/scheduler.cc index ec76e4d152..9e17dcb206 100644 --- a/mindspore/lite/src/scheduler.cc +++ b/mindspore/lite/src/scheduler.cc @@ -237,7 +237,7 @@ int Scheduler::ConstructSubGraphs(std::vector *kernels) { } auto cur_sub_graph_type = mindspore::lite::Scheduler::GetKernelSubGraphType(head_kernel); auto sub_kernels = FindAllSubGraphKernels(head_kernel, &is_kernel_sinked); - auto subgraph = CreateSubGraphKernel(sub_kernels, cur_sub_graph_type, kernels->size()); + auto subgraph = CreateSubGraphKernel(sub_kernels, cur_sub_graph_type); if (subgraph == nullptr) { MS_LOG(ERROR) << "Create SubGraphKernel failed"; return RET_ERROR; @@ -248,7 +248,7 @@ int Scheduler::ConstructSubGraphs(std::vector *kernels) { } kernel::SubGraphKernel *Scheduler::CreateSubGraphKernel(const std::vector &kernels, - kernel::SubGraphType type, int index) { + kernel::SubGraphType type) { if (type == kernel::kApuSubGraph) { return nullptr; } @@ -267,10 +267,15 @@ kernel::SubGraphKernel *Scheduler::CreateSubGraphKernel(const std::vectorSetIndex(index); + auto sub_kernel = new (std::nothrow) + kernel::SubGraphNpuKernel(input_tensors, output_tensors, input_kernels, output_kernels, kernels, context_); + if (sub_kernel == nullptr) { + MS_LOG(ERROR) << "NPU subgraph new failed."; + return nullptr; + } + sub_kernel->set_name("NPUSubgraph" + std::to_string(NPUManager::GetInstance()->index())); if (sub_kernel->Init() != RET_OK) { + MS_LOG(ERROR) << "NPU subgraph init failed."; return nullptr; } return sub_kernel; diff --git a/mindspore/lite/src/scheduler.h b/mindspore/lite/src/scheduler.h index bf658aabf4..15275ac8e9 100644 --- a/mindspore/lite/src/scheduler.h +++ b/mindspore/lite/src/scheduler.h @@ -46,7 +46,7 @@ class Scheduler { int ConstructSubGraphs(std::vector *kernels); kernel::SubGraphKernel *CreateSubGraphKernel(const std::vector &kernels, - kernel::SubGraphType type, int index); + kernel::SubGraphType type); std::vector FindAllSubGraphKernels( kernel::LiteKernel *head_kernel, std::map *sinked_kernel_map);