Browse Source

!860 add ge_tensor after const_folding

From: @chen_yemeng
Reviewed-by: @xchu42
Signed-off-by:
tags/v1.2.0
mindspore-ci-bot Gitee 3 years ago
parent
commit
94013efb11
2 changed files with 19 additions and 6 deletions
  1. +18
    -5
      ge/ge_local_engine/engine/host_cpu_engine.cc
  2. +1
    -1
      ge/graph/build/model_builder.cc

+ 18
- 5
ge/ge_local_engine/engine/host_cpu_engine.cc View File

@@ -36,7 +36,6 @@ namespace {
GELOGD("node:%s allocate output %zu success, size=%lld", op_desc->GetName().c_str(), i, size); \
ge_tensor->MutableTensorDesc().SetDataType(out_desc.GetDataType()); \
ge_tensor->MutableTensorDesc().SetShape(out_desc.GetShape()); \
outputs.emplace_back(ge_tensor); \
} else { \
ge_tensor = outputs[i]; \
GE_CHECK_NOTNULL(ge_tensor); \
@@ -222,16 +221,30 @@ Status HostCpuEngine::Run(NodePtr &node, const vector<ConstGeTensorPtr> &inputs,
GELOGD("Run node by host cpu engine. node name = %s", node->GetName().c_str());
std::unique_ptr<HostCpuOp> op_kernel;
GE_CHK_STATUS_RET_NOLOG(FindOpKernel(node, op_kernel));

std::map<std::string, const Tensor> named_inputs;
std::vector<GeTensorPtr> tmp_outputs;
tmp_outputs.swap(outputs);
std::map<std::string, Tensor> named_outputs;
auto op_desc = node->GetOpDesc();
GE_CHK_STATUS_RET_NOLOG(PrepareInputs(op_desc, inputs, named_inputs));
GE_CHK_STATUS_RET_NOLOG(PrepareOutputs(op_desc, tmp_outputs, named_outputs));
GE_CHK_STATUS_RET_NOLOG(PrepareOutputs(op_desc, outputs, named_outputs));
GE_CHK_STATUS_RET_NOLOG(RunInternal(op_desc, *op_kernel, named_inputs, named_outputs));

std::vector<GeTensorPtr> tmp_outputs;
for (size_t i = 0; i < op_desc->GetOutputsSize(); i++) {
auto tensor_name = op_desc->GetOutputNameByIndex(i);
if (tensor_name.empty()) {
GELOGE(INTERNAL_ERROR, "Failed to get output name. node = %s, index = %zu", op_desc->GetName().c_str(), i);
return INTERNAL_ERROR;
}
auto iter = named_outputs.find(tensor_name);
if (iter == named_outputs.end()) {
GELOGE(INTERNAL_ERROR, "Failed to get output tensor. node = %s, index = %zu, tensor_name = %s",
op_desc->GetName().c_str(), i, tensor_name.c_str());
return INTERNAL_ERROR;
}
auto ge_tensor = MakeShared<GeTensor>(TensorAdapter::AsGeTensor(iter->second));
GE_CHECK_NOTNULL(ge_tensor);
tmp_outputs.emplace_back(ge_tensor);
}
GELOGD("Run node by host cpu engine successfully. name node = %s", node->GetName().c_str());
outputs.swap(tmp_outputs);
return SUCCESS;


+ 1
- 1
ge/graph/build/model_builder.cc View File

@@ -562,7 +562,7 @@ Status ModelBuilder::MergeWeights() {
return FAILED;
}
}
weight_data.clear();
weight->ClearData();
}

return SUCCESS;


Loading…
Cancel
Save