Browse Source

Fix unnecessary catch and core dump in graph kernel

tags/v1.0.0
wuyongkang 5 years ago
parent
commit
db3e33a4e8
2 changed files with 6 additions and 5 deletions
  1. +5
    -4
      mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h
  2. +1
    -1
      mindspore/ccsrc/pipeline/jit/pipeline.cc

+ 5
- 4
mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h View File

@@ -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<AnfNodePtr> Xs_{}, Ys_{}, args_{};
bool is_inner_{false}, is_outer_{false}, is_match_{false};
};


+ 1
- 1
mindspore/ccsrc/pipeline/jit/pipeline.cc View File

@@ -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;


Loading…
Cancel
Save