Browse Source

Pre Merge pull request !345 from lixiwen1/compile

pull/345/MERGE
lixiwen1 Gitee 4 years ago
parent
commit
5257fa49c4
1 changed files with 19 additions and 15 deletions
  1. +19
    -15
      ge/graph/passes/compile_nodes_pass.cc

+ 19
- 15
ge/graph/passes/compile_nodes_pass.cc View File

@@ -35,7 +35,7 @@ const char *const kAICPUKernelLibName = "aicpu_tf_kernel";
namespace ge {
graphStatus CompileNodesPass::Run(ComputeGraphPtr graph) {
GE_TIMESTAMP_START(CompileNodesPass);
GELOGI("[CompileNodesPass]: optimize begin.");
GELOGD("[CompileNodesPass]: optimize begin.");
if (graph == nullptr) {
return GRAPH_SUCCESS;
}
@@ -81,7 +81,7 @@ graphStatus CompileNodesPass::Run(ComputeGraphPtr graph) {
GELOGE(result, "Compile op failed.");
return result;
}
GELOGI("[CompileNodesPass]: Optimize success.");
GELOGD("[CompileNodesPass]: Optimize success.");
GE_TIMESTAMP_EVENT_END(CompileNodesPass, "OptimizeStage2::ControlAttrOptimize::CompileNodesPass");
return GRAPH_SUCCESS;
}
@@ -111,20 +111,24 @@ graphStatus CompileNodesPass::GetSupportedKernel(const NodePtr &node, const std:
}
// begin accuracy supported check
if (!CheckAccuracySupport(kernel_info, instance, op_desc)) {
// if check accuracy support failed , try to go to aicpu engine
string aicpu_kernel_lib_name = kAICPUKernelLibName;
OpsKernelInfoStorePtr aicpu_kernel_info =
instance->OpsKernelManagerObj().GetOpsKernelInfoStore(aicpu_kernel_lib_name);
if (aicpu_kernel_info == nullptr) {
GELOGE(ge::GE_GRAPH_PARAM_NULLPTR, "Get aicpu kernel info store failed.");
return ge::GE_GRAPH_PARAM_NULLPTR;
}
if (!CheckAccuracySupport(aicpu_kernel_info, instance, op_desc)) {
GELOGE(GRAPH_FAILED, "AICPU engine does not support node:%s, type:%s , get kernel lib failed.",
node->GetName().c_str(), op_desc->GetType().c_str());
return GRAPH_FAILED;
// if check accuracy support failed , try to go to other engine.
string kernel_name_origin = kernel_lib_name;
OpsKernelManager &ops_kernel_manager = instance->OpsKernelManagerObj();
auto kernel_map = ops_kernel_manager.GetAllOpsKernelInfoStores();
for (auto it = kernel_map.begin(); it != kernel_map.end(); ++it) {
string tmp_kernel_name = it->first;
if (tmp_kernel_name == kernel_name_origin) {
continue;
}
OpsKernelInfoStorePtr tmp_kernel_info = it->second;
if (CheckAccuracySupport(tmp_kernel_info, instance, op_desc)) {
kernel_lib_name = tmp_kernel_name;
return GRAPH_SUCCESS;
}
}
kernel_lib_name = kAICPUKernelLibName;
GELOGE(GRAPH_FAILED, "Cannot find engine support node:%s, type:%s , get kernel lib failed.",
node->GetName().c_str(), op_desc->GetType().c_str());
return GRAPH_FAILED;
}
return GRAPH_SUCCESS;
}


Loading…
Cancel
Save