Browse Source

!25747 program exits quickly

Merge pull request !25747 from lanzhineng/infer
tags/v1.6.0
i-robot Gitee 4 years ago
parent
commit
48a71de2d0
2 changed files with 15 additions and 7 deletions
  1. +13
    -0
      mindspore/ccsrc/pipeline/jit/static_analysis/async_eval_result.cc
  2. +2
    -7
      mindspore/ccsrc/pipeline/jit/static_analysis/async_eval_result.h

+ 13
- 0
mindspore/ccsrc/pipeline/jit/static_analysis/async_eval_result.cc View File

@@ -82,6 +82,13 @@ void AnalysisSchedule::HandleException(const std::exception &ex) {
}
scheduleList_.clear();
}
void AnalysisSchedule::Stop() {
AsyncInferTaskPtr stopTask = AsyncInferTask::MakeShared(std::make_shared<AsyncAbstract>(), "Stop");
Add2Schedule(stopTask);
MS_LOG(DEBUG) << " Set AnalysisSchedule::Exit . The active thread count: " << activate_threads_.size()
<< " The infer_thread_count: " << infer_thread_count_
<< " schedule list size: " << scheduleList_.size();
}

void AnalysisSchedule::Wait() {
EnterWaiting();
@@ -114,6 +121,12 @@ void AnalysisSchedule::SetNextReady() {
if (scheduleList_.empty()) {
return;
}
// Exit Flag
if (scheduleList_.front()->ThreadID() == "Stop") {
notExit_ = false;
scheduleList_.pop_front();
return;
}
// Check if enter endless loop
auto it = std::find_if(scheduleList_.begin(), scheduleList_.end(), [](const auto &item) {
MS_EXCEPTION_IF_NULL(item);


+ 2
- 7
mindspore/ccsrc/pipeline/jit/static_analysis/async_eval_result.h View File

@@ -42,7 +42,7 @@ using AsyncInferTaskPtr = std::shared_ptr<AsyncInferTask>;
using AsyncAbstractPtr = std::shared_ptr<AsyncAbstract>;
class AnalysisSchedule {
public:
~AnalysisSchedule() { Stop(); }
~AnalysisSchedule() = default;
AnalysisSchedule(const AnalysisSchedule &) = delete;
AnalysisSchedule &operator=(const AnalysisSchedule &) = delete;
static AnalysisSchedule &GetInstance() {
@@ -52,12 +52,7 @@ class AnalysisSchedule {
static void SetThreadID(const std::string &caller);
static std::string &GetThreadID();
void HandleException(const std::exception &ex);
void Stop() {
notExit_ = false;
MS_LOG(DEBUG) << " Set AnalysisSchedule::Exit . The active thread count: " << activate_threads_.size()
<< " The infer_thread_count: " << infer_thread_count_
<< " schedule list size: " << scheduleList_.size();
}
void Stop();
void Wait();
void Add2Schedule(const AsyncInferTaskPtr &async_infer_task_ptr);
void Yield(const AsyncInferTask *asyncTask);


Loading…
Cancel
Save