|
|
|
@@ -249,10 +249,23 @@ void AscendSession::RunOpExecTask(const std::shared_ptr<KernelGraph> &kernel_gra |
|
|
|
MS_LOG(INFO) << "Finish!"; |
|
|
|
} |
|
|
|
|
|
|
|
bool AscendSession::GraphCacheExist(const GraphInfo &graph_info) const { |
|
|
|
if (run_op_graphs_.find(graph_info) != run_op_graphs_.end()) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
void AscendSession::BuildOp(const OpRunInfo &op_run_info, const GraphInfo &graph_info, |
|
|
|
const std::vector<tensor::TensorPtr> &input_tensors, |
|
|
|
const std::vector<bool> &tensors_mask) { |
|
|
|
MS_LOG(INFO) << "Build op " << op_run_info.op_name << " start !"; |
|
|
|
if (GraphCacheExist(graph_info)) { |
|
|
|
MS_LOG(INFO) << "Build op " << op_run_info.op_name << " finish !"; |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// construct graph include one op |
|
|
|
auto graph = ConstructSingleOpGraph(op_run_info, input_tensors, tensors_mask); |
|
|
|
MS_EXCEPTION_IF_NULL(graph); |
|
|
|
@@ -267,6 +280,7 @@ void AscendSession::BuildOp(const OpRunInfo &op_run_info, const GraphInfo &graph |
|
|
|
RunOpAdjustKernel(graph); |
|
|
|
BuildKernel(graph); |
|
|
|
run_op_graphs_[graph_info] = graph; |
|
|
|
MS_LOG(INFO) << "Build op " << op_run_info.op_name << " finish !"; |
|
|
|
} |
|
|
|
|
|
|
|
py::tuple AscendSession::RunOp(const OpRunInfo &op_run_info, const GraphInfo &graph_info, |
|
|
|
@@ -291,7 +305,6 @@ py::tuple AscendSession::RunOp(const OpRunInfo &op_run_info, const GraphInfo &gr |
|
|
|
} |
|
|
|
py::object tuple_obj = utils::cast<PyObjectRef>(output_tensors).object_; |
|
|
|
py::tuple tuple_tensors = py::cast<py::tuple>(tuple_obj); |
|
|
|
run_op_graphs_.clear(); |
|
|
|
MS_LOG(INFO) << "Run op " << op_run_info.op_name << " finish!"; |
|
|
|
return tuple_tensors; |
|
|
|
} |
|
|
|
|