Browse Source

!9290 fix exception not exit error

From: @kisnwang
Reviewed-by: 
Signed-off-by:
tags/v1.1.0
mindspore-ci-bot Gitee 5 years ago
parent
commit
dd2b45e860
1 changed files with 11 additions and 6 deletions
  1. +11
    -6
      mindspore/ccsrc/backend/session/executor.cc

+ 11
- 6
mindspore/ccsrc/backend/session/executor.cc View File

@@ -106,23 +106,26 @@ void BuildGraphTask::Run() {


void RunGraphTask::Run() { void RunGraphTask::Run() {
MS_EXCEPTION_IF_NULL(session_); MS_EXCEPTION_IF_NULL(session_);
MS_LOG(INFO) << "Start run graph " << graph_id_;
auto graph = session_->GetGraph(graph_id_);
if (graph == nullptr) {
MS_LOG(ERROR) << "Invalid graph id " << graph_id_;
return;
}
graph->ResetGraphRunningStatus();
try { try {
MS_LOG(INFO) << "Start run graph " << graph_id_;
auto graph = session_->GetGraph(graph_id_);
MS_EXCEPTION_IF_NULL(graph);
graph->ResetGraphRunningStatus();
session_->RunGraphImpl(graph_id_, input_tensors_, &outputs_); session_->RunGraphImpl(graph_id_, input_tensors_, &outputs_);
graph->OnRunGraphFinished();
UpdateOutputTensors(&outputs_, tensor_to_node_); UpdateOutputTensors(&outputs_, tensor_to_node_);
MS_LOG(INFO) << "End run graph " << graph_id_;
} catch (const std::exception &e) { } catch (const std::exception &e) {
MsException::GetInstance().SetException(); MsException::GetInstance().SetException();
} }
graph->OnRunGraphFinished();
for (auto &tensor : input_need_lock_tensors_) { for (auto &tensor : input_need_lock_tensors_) {
tensor->SetNeedWait(false); tensor->SetNeedWait(false);
} }
NotifyOutputTensors(&outputs_); NotifyOutputTensors(&outputs_);
ExecutorManager::Instance().OnRunGraphFinished(); ExecutorManager::Instance().OnRunGraphFinished();
MS_LOG(INFO) << "End run graph " << graph_id_;
} }


void RunOpTask::Run() { void RunOpTask::Run() {
@@ -300,6 +303,7 @@ void Executor::RunGraphAsync(const SessionPtr &session, const GraphId &graph_id,
} }
} }
} }
MsException::GetInstance().CheckException();
for (auto &tensor : task->input_need_lock_tensors_) { for (auto &tensor : task->input_need_lock_tensors_) {
tensor->SetNeedWait(true); tensor->SetNeedWait(true);
} }
@@ -320,6 +324,7 @@ void Executor::RunGraphAsync(const SessionPtr &session, const GraphId &graph_id,
mindspore::ScopedLongRunning long_running; mindspore::ScopedLongRunning long_running;
std::unique_lock<std::mutex> lock(reenter_mutex_); std::unique_lock<std::mutex> lock(reenter_mutex_);
reenter_cond_var_.wait(lock, [graph] { return graph->IsPostGraphFinished(); }); reenter_cond_var_.wait(lock, [graph] { return graph->IsPostGraphFinished(); });
MsException::GetInstance().CheckException();
} }
} }




Loading…
Cancel
Save