From 3557280a4036235f4a3f2879279f807adbe9d1b6 Mon Sep 17 00:00:00 2001 From: lichun Date: Tue, 11 May 2021 19:51:03 +0800 Subject: [PATCH 1/2] remove ge_lib check for fwk package support offline inference --- ge/hybrid/node_executor/aicore/aicore_task_compiler.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc b/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc index 742b3ca2..55325b99 100755 --- a/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc +++ b/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc @@ -32,7 +32,10 @@ std::mutex AiCoreTaskCompiler::mu_; Status AiCoreTaskCompiler::Initialize() { auto ge_lib = GELib::GetInstance(); - GE_CHECK_NOTNULL(ge_lib); + if (ge_lib == nullptr) { + GELOGW("ge_lib is nullptr!"); + return SUCCESS; + } if (!ge_lib->InitFlag()) { GELOGE(GE_CLI_GE_NOT_INITIALIZED, "[Check][State] failed, because Ge_lib is uninitialized."); REPORT_INNER_ERROR("E19999", "Initialize failed, because Ge_lib is uninitialized."); From c34ea8292b4eb64efb8769634f91a75c817156b6 Mon Sep 17 00:00:00 2001 From: lichun Date: Wed, 12 May 2021 11:46:30 +0800 Subject: [PATCH 2/2] support fwk offline inference when ge_lib is not initialize --- .../node_executor/aicore/aicore_node_executor.cc | 3 --- .../node_executor/aicore/aicore_task_compiler.cc | 20 ++++++++++++++++---- .../node_executor/aicore/aicore_task_compiler.h | 2 ++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ge/hybrid/node_executor/aicore/aicore_node_executor.cc b/ge/hybrid/node_executor/aicore/aicore_node_executor.cc index 29ae831c..7ebb9e39 100755 --- a/ge/hybrid/node_executor/aicore/aicore_node_executor.cc +++ b/ge/hybrid/node_executor/aicore/aicore_node_executor.cc @@ -41,9 +41,6 @@ AiCoreNodeTask::AiCoreNodeTask(std::vector> &&task Status AiCoreNodeExecutor::Initialize() { compiler_ = TaskCompilerFactory::GetInstance().GetTaskCompiler(); - if (compiler_ != nullptr) { - GE_CHK_STATUS_RET(compiler_->Initialize(), "[Init][TaskCompiler] failed."); - } return SUCCESS; } diff --git a/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc b/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc index 55325b99..4eaf6bb5 100755 --- a/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc +++ b/ge/hybrid/node_executor/aicore/aicore_task_compiler.cc @@ -29,13 +29,11 @@ uint64_t kFakeSize = 0x10000000UL; REGISTER_TASK_COMPILER(AiCoreTaskCompiler); } std::mutex AiCoreTaskCompiler::mu_; +std::mutex AiCoreTaskCompiler::init_mu_; Status AiCoreTaskCompiler::Initialize() { auto ge_lib = GELib::GetInstance(); - if (ge_lib == nullptr) { - GELOGW("ge_lib is nullptr!"); - return SUCCESS; - } + GE_CHECK_NOTNULL(ge_lib); if (!ge_lib->InitFlag()) { GELOGE(GE_CLI_GE_NOT_INITIALIZED, "[Check][State] failed, because Ge_lib is uninitialized."); REPORT_INNER_ERROR("E19999", "Initialize failed, because Ge_lib is uninitialized."); @@ -44,6 +42,10 @@ Status AiCoreTaskCompiler::Initialize() { auto &kernel_manager = ge_lib->OpsKernelManagerObj(); aic_kernel_store_ = kernel_manager.GetOpsKernelInfoStore("AIcoreEngine"); GE_CHECK_NOTNULL(aic_kernel_store_); + std::lock_guard lk(init_mu_); + { + is_initialized_ = true; + } return SUCCESS; } @@ -60,6 +62,16 @@ Status AiCoreTaskCompiler::DoCompileOp(const NodePtr &node) const { } Status AiCoreTaskCompiler::CompileOp(const NodePtr &node, std::vector &tasks) { + if (!is_initialized_) { + Status ret; + ret = Initialize(); + if (ret != SUCCESS) { + GELOGE(FAILED, "[Check][State][%s] Offline inference not support online compile.", ori_node_name.c_str()); + REPORT_INNER_ERROR("E19999", "[%s] Offline inference not support online compile.", ori_node_name.c_str()); + return ret; + } + } + GE_CHECK_NOTNULL(node); GELOGI("AiCoreTaskCompiler(%s) CompileOp Start.", node->GetName().c_str()); diff --git a/ge/hybrid/node_executor/aicore/aicore_task_compiler.h b/ge/hybrid/node_executor/aicore/aicore_task_compiler.h index b6dfd82b..eecbe834 100755 --- a/ge/hybrid/node_executor/aicore/aicore_task_compiler.h +++ b/ge/hybrid/node_executor/aicore/aicore_task_compiler.h @@ -34,7 +34,9 @@ class AiCoreTaskCompiler : public TaskCompiler { Status DoCompileOp(const NodePtr &node) const; Status DoGenerateTask(const Node &node, std::vector &tasks); OpsKernelInfoStorePtr aic_kernel_store_; + bool is_initialized_ = false; static std::mutex mu_; + static std::mutex init_mu_; }; } // namespace hybrid } // namespace ge