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