From db3e33a4e8a69859853e464f89e41cac83cd8b4a Mon Sep 17 00:00:00 2001 From: wuyongkang Date: Sat, 29 Aug 2020 18:00:26 +0800 Subject: [PATCH] Fix unnecessary catch and core dump in graph kernel --- mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h | 9 +++++---- mindspore/ccsrc/pipeline/jit/pipeline.cc | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h b/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h index 706df7669b..5e0c598501 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h @@ -37,9 +37,11 @@ class MergeAddN : public AnfVisitor { public: AnfNodePtr operator()(const OptimizerPtr &optimizer, const AnfNodePtr &node) override { Reset(); - optimizer_ = optimizer; + mng_ = optimizer->resource()->manager(); is_outer_ = true; AnfVisitor::Match(prim::kPrimAddN, {IsCNode})(node); + // do not hold this manager + mng_ = nullptr; if (!is_match_ || node->func_graph() == nullptr) { return nullptr; } @@ -104,8 +106,7 @@ class MergeAddN : public AnfVisitor { } bool is_unique(const AnfNodePtr &node) { - auto mng = optimizer_->resource()->manager(); - auto &node_users = mng->node_users(); + auto &node_users = mng_->node_users(); if (node_users.find(node) == node_users.end()) { return false; } @@ -124,7 +125,7 @@ class MergeAddN : public AnfVisitor { } private: - OptimizerPtr optimizer_{nullptr}; + FuncGraphManagerPtr mng_{nullptr}; std::vector Xs_{}, Ys_{}, args_{}; bool is_inner_{false}, is_outer_{false}, is_match_{false}; }; diff --git a/mindspore/ccsrc/pipeline/jit/pipeline.cc b/mindspore/ccsrc/pipeline/jit/pipeline.cc index 76244c2186..3d61f08cee 100644 --- a/mindspore/ccsrc/pipeline/jit/pipeline.cc +++ b/mindspore/ccsrc/pipeline/jit/pipeline.cc @@ -481,9 +481,9 @@ bool ExecutorPy::CompileInner(const py::object &obj, const py::tuple &args, cons SaveCompiledGraph(phase_s); opt::python_pass::PyPassManager::GetInstance()->ClearPipelineRes(); - resource->Clean(); // Reclaim all resource used by optimizer; ReclaimOptimizer(); + resource->Clean(); MS_LOG(INFO) << "End ExecutorPy compile!"; return true;