From 4ccf305cc6a5b19c92c61865acc17cbd411e2fd9 Mon Sep 17 00:00:00 2001 From: kswang Date: Tue, 13 Apr 2021 16:48:24 +0800 Subject: [PATCH] clear task when exit --- mindspore/ccsrc/backend/session/executor.cc | 10 ++++++++-- mindspore/ccsrc/backend/session/executor.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mindspore/ccsrc/backend/session/executor.cc b/mindspore/ccsrc/backend/session/executor.cc index 09a61f4711..b18a5d6dde 100644 --- a/mindspore/ccsrc/backend/session/executor.cc +++ b/mindspore/ccsrc/backend/session/executor.cc @@ -192,6 +192,7 @@ void Executor::WorkerLoop() { done_tasks_.emplace_back(task); } if (task->type_ != kRunGraph || task->sync_run_) { + std::lock_guard lock(task_mutex_); sync_run_task_finished_ = true; sync_cond_var_.notify_all(); } @@ -217,12 +218,17 @@ void Executor::OnEvent(const ExecutorEvent &event) { if (event == ExecutorEvent::kRunGraphFinished) { OnRunGraphFinished(); } else if (event == ExecutorEvent::kClear) { - WorkerJoin(); + OnClear(); } else if (event == ExecutorEvent::kException) { OnException(); } } +void Executor::OnClear() { + WorkerJoin(); + ClearDoneTasks(); +} + void Executor::OnException() { std::vector> new_done_tasks; { @@ -278,9 +284,9 @@ void Executor::ClearDoneTasks() { } void Executor::RunTask(const std::shared_ptr &task, bool sync, bool long_run) { - sync_run_task_finished_ = false; { std::lock_guard lock(task_mutex_); + sync_run_task_finished_ = false; ready_tasks_.push(task); } task_cond_var_.notify_all(); diff --git a/mindspore/ccsrc/backend/session/executor.h b/mindspore/ccsrc/backend/session/executor.h index 4e323a99ef..249c52047c 100644 --- a/mindspore/ccsrc/backend/session/executor.h +++ b/mindspore/ccsrc/backend/session/executor.h @@ -176,6 +176,7 @@ class Executor { bool IsTaskReady(const std::shared_ptr &task); void WaitLockedInputs(const SessionPtr &session, const std::shared_ptr &task); void OnWorkerExit(); + void OnClear(); void OnRunGraphFinished(); void OnException(); void ClearDoneTasks();