Browse Source

support fwk offline inference when ge_lib is not initialize

pull/1635/head
lichun 4 years ago
parent
commit
c34ea8292b
3 changed files with 18 additions and 7 deletions
  1. +0
    -3
      ge/hybrid/node_executor/aicore/aicore_node_executor.cc
  2. +16
    -4
      ge/hybrid/node_executor/aicore/aicore_task_compiler.cc
  3. +2
    -0
      ge/hybrid/node_executor/aicore/aicore_task_compiler.h

+ 0
- 3
ge/hybrid/node_executor/aicore/aicore_node_executor.cc View File

@@ -41,9 +41,6 @@ AiCoreNodeTask::AiCoreNodeTask(std::vector<std::unique_ptr<AiCoreOpTask>> &&task

Status AiCoreNodeExecutor::Initialize() {
compiler_ = TaskCompilerFactory::GetInstance().GetTaskCompiler();
if (compiler_ != nullptr) {
GE_CHK_STATUS_RET(compiler_->Initialize(), "[Init][TaskCompiler] failed.");
}
return SUCCESS;
}



+ 16
- 4
ge/hybrid/node_executor/aicore/aicore_task_compiler.cc View File

@@ -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<std::mutex> 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<domi::TaskDef> &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());



+ 2
- 0
ge/hybrid/node_executor/aicore/aicore_task_compiler.h View File

@@ -34,7 +34,9 @@ class AiCoreTaskCompiler : public TaskCompiler {
Status DoCompileOp(const NodePtr &node) const;
Status DoGenerateTask(const Node &node, std::vector<domi::TaskDef> &tasks);
OpsKernelInfoStorePtr aic_kernel_store_;
bool is_initialized_ = false;
static std::mutex mu_;
static std::mutex init_mu_;
};
} // namespace hybrid
} // namespace ge


Loading…
Cancel
Save