diff --git a/mindspore-lite/src/extendrt/delegate/ascend_acl/model_process.cc b/mindspore-lite/src/extendrt/delegate/ascend_acl/model_process.cc index 22b9c8b64df85d67e30de8c4bd7f11c3ce965b73..65b4927f5b1b204551650f4c92082a8c5cd1ed71 100644 --- a/mindspore-lite/src/extendrt/delegate/ascend_acl/model_process.cc +++ b/mindspore-lite/src/extendrt/delegate/ascend_acl/model_process.cc @@ -646,22 +646,20 @@ bool ModelProcess::ShareWorkspaceAndWeightspaceProcess(const size_t &work_size) } bool ModelProcess::CreateModelOutputs() { - if (!IsDynamicShape()) { + if (!(IsDynamicShape() || is_dynamic_output_)) { for (size_t i = 0; i < output_infos_.size(); ++i) { const auto &output_info = output_infos_[i]; auto host_data = malloc(output_info.buffer_size); MS_CHECK_TRUE_MSG(host_data != nullptr, false, "Malloc data failed."); - auto output = - MSTensor::CreateTensor(output_info.name, static_cast(TransToDataType(output_info.data_type)), - output_info.dims, host_data, output_info.buffer_size); + auto output = MSTensor(output_info.name, static_cast(TransToDataType(output_info.data_type)), + output_info.dims, host_data, output_info.buffer_size); free(host_data); host_data = nullptr; if (output == nullptr) { MS_LOG(ERROR) << "Create dynamic shape output tensor failed."; return false; } - model_outputs_.push_back(*output); - MSTensor::DestroyTensorPtr(output); + model_outputs_.push_back(output); } } return true; @@ -1582,7 +1580,7 @@ bool ModelProcess::GetOutputs(const std::vector *outputs) { for (size_t i = 0; i < output_infos_.size(); ++i) { auto &output_info = output_infos_[i]; - if (IsDynamicShape()) { + if (IsDynamicShape() || is_dynamic_output_) { auto host_data = malloc(output_info.buffer_size); MS_CHECK_TRUE_MSG(host_data != nullptr, false, "Malloc data failed."); auto ret = @@ -1592,9 +1590,8 @@ bool ModelProcess::GetOutputs(const std::vector *outputs) { << " to host failed, memory size " << output_info.buffer_size << ", ret: " << ret; return false; } - auto output = - MSTensor::CreateTensor(output_info.name, static_cast(TransToDataType(output_info.data_type)), - output_info.dims, host_data, output_info.buffer_size); + auto output = MSTensor(output_info.name, static_cast(TransToDataType(output_info.data_type)), + output_info.dims, host_data, output_info.buffer_size); free(host_data); host_data = nullptr; @@ -1602,8 +1599,7 @@ bool ModelProcess::GetOutputs(const std::vector *outputs) { MS_LOG(ERROR) << "Create dynamic shape output tensor failed."; return false; } - new_outputs.push_back(*output); - MSTensor::DestroyTensorPtr(output); + new_outputs.push_back(output); } else { auto host_data = model_outputs_[i].MutableData(); auto ret =