Browse Source

Decouple ir from optimizer

tags/v0.6.0-beta
He Wei 5 years ago
parent
commit
60d168adec
39 changed files with 90 additions and 64 deletions
  1. +27
    -0
      mindspore/ccsrc/frontend/optimizer/anf_visitor.h
  2. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass.h
  3. +2
    -2
      mindspore/ccsrc/frontend/optimizer/irpass/arithmetic_simplify.h
  4. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/branch_culling.h
  5. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.cc
  6. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.h
  7. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/convert.h
  8. +2
    -2
      mindspore/ccsrc/frontend/optimizer/irpass/env_item_eliminate.h
  9. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.cc
  10. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.h
  11. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/gradient_eliminate.h
  12. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/incorporate_call.h
  13. +2
    -2
      mindspore/ccsrc/frontend/optimizer/irpass/incorporate_getitem.h
  14. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/indexed_slices_eliminate.h
  15. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/inline.h
  16. +2
    -2
      mindspore/ccsrc/frontend/optimizer/irpass/item_tuple_eliminate.h
  17. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/mark_interface_fusion.h
  18. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h
  19. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/minmax_grad.h
  20. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/param_replace.h
  21. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/partial_eliminate.h
  22. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/prim_eliminate.h
  23. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/reduce_eliminate.h
  24. +2
    -2
      mindspore/ccsrc/frontend/optimizer/irpass/reshape_eliminate.h
  25. +2
    -2
      mindspore/ccsrc/frontend/optimizer/irpass/special_op_eliminate.h
  26. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/specialize_transform.h
  27. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/symbol_resolver.h
  28. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/tile_eliminate.h
  29. +1
    -1
      mindspore/ccsrc/frontend/optimizer/irpass/transpose_eliminate.h
  30. +1
    -1
      mindspore/ccsrc/frontend/optimizer/opt.h
  31. +5
    -5
      mindspore/ccsrc/frontend/optimizer/optimizer_caller.h
  32. +2
    -2
      mindspore/ccsrc/utils/graph_utils_extends.cc
  33. +5
    -5
      mindspore/core/ir/anf.h
  34. +3
    -3
      mindspore/core/ir/anf_extends.cc
  35. +2
    -3
      mindspore/core/ir/pattern_matcher.h
  36. +5
    -5
      mindspore/core/ir/visitor.cc
  37. +5
    -4
      mindspore/core/ir/visitor.h
  38. +0
    -1
      tests/ut/cpp/optimizer/lib_test.cc
  39. +1
    -1
      tests/ut/cpp/optimizer/opt_test.cc

+ 27
- 0
mindspore/ccsrc/frontend/optimizer/anf_visitor.h View File

@@ -0,0 +1,27 @@
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef MINDSPORE_CCSRC_OPTIMIZER_ANF_VISITOR_H_
#define MINDSPORE_CCSRC_OPTIMIZER_ANF_VISITOR_H_

#include <vector>
#include "ir/visitor.h"
#include "frontend/optimizer/optimizer_caller.h"

namespace mindspore {
class AnfVisitor : public AnfIrVisitor, public OptimizerCaller {};
} // namespace mindspore
#endif // MINDSPORE_CCSRC_OPTIMIZER_ANF_VISITOR_H_

+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass.h View File

@@ -21,7 +21,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/opt.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"

namespace mindspore {
namespace opt {


+ 2
- 2
mindspore/ccsrc/frontend/optimizer/irpass/arithmetic_simplify.h View File

@@ -23,9 +23,9 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/irpass/prim_eliminate.h"
#include "ir/optimizer_caller.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/pattern_matcher.h"
#include "ir/visitor.h"

namespace mindspore {
namespace opt {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/branch_culling.h View File

@@ -22,7 +22,7 @@

#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"
#include "ir/optimizer_caller.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "ir/pattern_matcher.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.cc View File

@@ -17,7 +17,7 @@
#include "frontend/optimizer/irpass/cast_eliminate.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "ir/func_graph.h"
#include "pipeline/jit/parse/data_converter.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.h View File

@@ -17,7 +17,7 @@
#ifndef MINDSPORE_CCSRC_FRONTEND_OPTIMIZER_IRPASS_CAST_ELIMINATE_H_
#define MINDSPORE_CCSRC_FRONTEND_OPTIMIZER_IRPASS_CAST_ELIMINATE_H_

#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"



+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/convert.h View File

@@ -21,7 +21,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/func_graph.h"
#include "frontend/operator/ops.h"



+ 2
- 2
mindspore/ccsrc/frontend/optimizer/irpass/env_item_eliminate.h View File

@@ -25,8 +25,8 @@

#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"
#include "ir/optimizer_caller.h"
#include "ir/visitor.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.cc View File

@@ -24,7 +24,7 @@
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"



+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.h View File

@@ -26,7 +26,7 @@
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"



+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/gradient_eliminate.h View File

@@ -23,7 +23,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "common/utils.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/ad/grad.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/incorporate_call.h View File

@@ -24,7 +24,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"
#include "frontend/operator/ops.h"


+ 2
- 2
mindspore/ccsrc/frontend/optimizer/irpass/incorporate_getitem.h View File

@@ -25,8 +25,8 @@

#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"
#include "ir/optimizer_caller.h"
#include "ir/visitor.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/indexed_slices_eliminate.h View File

@@ -22,7 +22,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"

namespace mindspore {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/inline.h View File

@@ -23,7 +23,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"
#include "frontend/operator/ops.h"


+ 2
- 2
mindspore/ccsrc/frontend/optimizer/irpass/item_tuple_eliminate.h View File

@@ -21,8 +21,8 @@
#include <memory>
#include <vector>

#include "ir/optimizer_caller.h"
#include "ir/visitor.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/mark_interface_fusion.h View File

@@ -24,7 +24,7 @@
#include "backend/session/anf_runtime_algorithm.h"
#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "utils/graph_utils.h"
#include "frontend/operator/composite/composite.h"


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

@@ -23,7 +23,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"

namespace mindspore {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/minmax_grad.h View File

@@ -22,7 +22,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"

namespace mindspore {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/param_replace.h View File

@@ -21,7 +21,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "pipeline/jit/parse/parse.h"



+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/partial_eliminate.h View File

@@ -23,7 +23,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"

namespace mindspore {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/prim_eliminate.h View File

@@ -19,7 +19,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"

namespace mindspore {
namespace opt {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/reduce_eliminate.h View File

@@ -23,7 +23,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "abstract/dshape.h"



+ 2
- 2
mindspore/ccsrc/frontend/optimizer/irpass/reshape_eliminate.h View File

@@ -20,8 +20,8 @@
#include <vector>

#include "ir/func_graph.h"
#include "ir/optimizer_caller.h"
#include "ir/visitor.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"


+ 2
- 2
mindspore/ccsrc/frontend/optimizer/irpass/special_op_eliminate.h View File

@@ -22,9 +22,9 @@
#include <memory>
#include <vector>

#include "ir/optimizer_caller.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "ir/pattern_matcher.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/irpass/prim_eliminate.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/specialize_transform.h View File

@@ -26,7 +26,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "ir/manager.h"
#include "ir/func_graph.h"
#include "ir/func_graph_cloner.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/symbol_resolver.h View File

@@ -22,7 +22,7 @@

#include "frontend/optimizer/optimizer.h"
#include "frontend/optimizer/irpass.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"
#include "pipeline/jit/parse/data_converter.h"
#include "pipeline/jit/parse/python_adapter.h"


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/tile_eliminate.h View File

@@ -22,7 +22,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"

namespace mindspore {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/irpass/transpose_eliminate.h View File

@@ -22,7 +22,7 @@

#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/optimizer.h"
#include "ir/visitor.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/operator/ops.h"

namespace mindspore {


+ 1
- 1
mindspore/ccsrc/frontend/optimizer/opt.h View File

@@ -23,7 +23,7 @@

#include "ir/anf.h"
#include "ir/func_graph.h"
#include "ir/optimizer_caller.h"
#include "frontend/optimizer/optimizer_caller.h"
#include "frontend/operator/ops.h"

namespace mindspore {


mindspore/core/ir/optimizer_caller.h → mindspore/ccsrc/frontend/optimizer/optimizer_caller.h View File

@@ -14,20 +14,20 @@
* limitations under the License.
*/

#ifndef MINDSPORE_CORE_IR_OPTIMIZER_CALLER_H_
#define MINDSPORE_CORE_IR_OPTIMIZER_CALLER_H_
#ifndef MINDSPORE_CCSRC_OPTIMIZER_OPTIMIZER_CALLER_H_
#define MINDSPORE_CCSRC_OPTIMIZER_OPTIMIZER_CALLER_H_

#include <memory>

#include "ir/anf.h"
#include "ir/visitor.h"

namespace mindspore {
namespace opt {
class Optimizer;
using OptimizerPtr = std::shared_ptr<Optimizer>;
using OptimizerWeakPtr = std::weak_ptr<Optimizer>;

using PredicateFuncType = std::function<bool(const AnfNodePtr &)>;
using PredicateFuncType = mindspore::PredicateFuncType;
} // namespace opt

class OptimizerCaller {
@@ -36,4 +36,4 @@ class OptimizerCaller {
};
using OptimizerCallerPtr = std::shared_ptr<OptimizerCaller>;
} // namespace mindspore
#endif // MINDSPORE_CORE_IR_OPTIMIZER_CALLER_H_
#endif // MINDSPORE_CCSRC_OPTIMIZER_OPTIMIZER_CALLER_H_

+ 2
- 2
mindspore/ccsrc/utils/graph_utils_extends.cc View File

@@ -36,7 +36,7 @@

namespace mindspore {
namespace {
class DeepFirstSearcher : public AnfVisitor {
class DeepFirstSearcher : public AnfIrVisitor {
public:
explicit DeepFirstSearcher(const IncludeFunc &include, const FilterFunc &filter = nullptr)
: include_(include), filter_(filter) {}
@@ -67,7 +67,7 @@ class DeepFirstSearcher : public AnfVisitor {
res_.push_back(node);
}
if (incl == FOLLOW) {
AnfVisitor::Visit(node);
AnfIrVisitor::Visit(node);
}
}



+ 5
- 5
mindspore/core/ir/anf.h View File

@@ -67,7 +67,7 @@ class BaseRef;
class Var;
using VarPtr = std::shared_ptr<Var>;

class AnfVisitor;
class AnfIrVisitor;

class ParamValue;
using ParamValuePtr = std::shared_ptr<ParamValue>;
@@ -100,7 +100,7 @@ class AnfNode : public Base {
~AnfNode() override = default;
MS_DECLARE_PARENT(AnfNode, Base);

virtual void accept(AnfVisitor *) {}
virtual void accept(AnfIrVisitor *) {}
FuncGraphPtr func_graph() const { return func_graph_.lock(); }

void set_func_graph(const FuncGraphPtr &func_graph) { func_graph_ = FuncGraphWeakPtr(func_graph); }
@@ -214,7 +214,7 @@ class CNode : public AnfNode {
~CNode() override = default;
MS_DECLARE_PARENT(CNode, AnfNode);

void accept(AnfVisitor *v) override;
void accept(AnfIrVisitor *v) override;
// check whether this cnode has some primitive value as the first input.
bool IsApply(const PrimitivePtr &) const;

@@ -265,7 +265,7 @@ class Parameter : public ANode {
~Parameter() override = default;
MS_DECLARE_PARENT(Parameter, ANode);

void accept(AnfVisitor *v) override;
void accept(AnfIrVisitor *v) override;
std::string DebugString(int recursive_level = 1) const override;
std::string name() const { return name_; }
void set_name(const std::string &name) { name_ = name; }
@@ -332,7 +332,7 @@ class ValueNode : public ANode {
~ValueNode() override = default;
MS_DECLARE_PARENT(ValueNode, ANode);

void accept(AnfVisitor *v) override;
void accept(AnfIrVisitor *v) override;
const ValuePtr &value() const { return value_; }
std::string fullname_with_scope() override;



+ 3
- 3
mindspore/core/ir/anf_extends.cc View File

@@ -93,7 +93,7 @@ std::string CNode::fullname_with_scope() {
return fullname_with_scope_;
}

void CNode::accept(AnfVisitor *v) { v->Visit(shared_from_base<CNode>()); }
void ValueNode::accept(AnfVisitor *v) { v->Visit(shared_from_base<ValueNode>()); }
void Parameter::accept(AnfVisitor *v) { v->Visit(shared_from_base<Parameter>()); }
void CNode::accept(AnfIrVisitor *v) { v->Visit(shared_from_base<CNode>()); }
void ValueNode::accept(AnfIrVisitor *v) { v->Visit(shared_from_base<ValueNode>()); }
void Parameter::accept(AnfIrVisitor *v) { v->Visit(shared_from_base<Parameter>()); }
} // namespace mindspore

+ 2
- 3
mindspore/core/ir/pattern_matcher.h View File

@@ -22,8 +22,7 @@
#include <tuple>
#include <vector>

#include "ir/anf.h"
#include "ir/optimizer_caller.h"
#include "ir/visitor.h"
#include "base/core_ops.h"

namespace mindspore {
@@ -41,7 +40,7 @@ namespace mindspore {
template <typename T>
class PBase {
public:
bool CheckFunc(const opt::PredicateFuncType &func, const AnfNodePtr &node) {
bool CheckFunc(const PredicateFuncType &func, const AnfNodePtr &node) {
return func(get_object().GetNode(node));
}



+ 5
- 5
mindspore/core/ir/visitor.cc View File

@@ -18,24 +18,24 @@
#include "ir/visitor.h"

namespace mindspore {
void AnfVisitor::Visit(const AnfNodePtr &node) { node->accept(this); }
void AnfIrVisitor::Visit(const AnfNodePtr &node) { node->accept(this); }

void AnfVisitor::Visit(const CNodePtr &cnode) {
void AnfIrVisitor::Visit(const CNodePtr &cnode) {
for (auto &input : cnode->inputs()) {
Visit(input);
}
}

void AnfVisitor::Visit(const ValueNodePtr &vnode) {
void AnfIrVisitor::Visit(const ValueNodePtr &vnode) {
if (IsValueNode<FuncGraph>(vnode)) {
auto func_graph = GetValueNode<FuncGraphPtr>(vnode);
Visit(func_graph->output());
}
}

void AnfVisitor::Visit(const ParameterPtr &) {}
void AnfIrVisitor::Visit(const ParameterPtr &) {}

VisitFuncType AnfVisitor::Match(const PrimitivePtr &prim, const std::vector<opt::PredicateFuncType> &funcs) {
VisitFuncType AnfIrVisitor::Match(const PrimitivePtr &prim, const std::vector<PredicateFuncType> &funcs) {
auto fn = [prim, funcs, this](const AnfNodePtr &node) {
if (!IsPrimitiveCNode(node, prim)) {
return;


+ 5
- 4
mindspore/core/ir/visitor.h View File

@@ -18,18 +18,19 @@
#define MINDSPORE_CORE_IR_VISITOR_H_

#include <vector>
#include "ir/optimizer_caller.h"
#include "ir/anf.h"

namespace mindspore {
using VisitFuncType = std::function<void(const AnfNodePtr &)>;
class AnfVisitor : public OptimizerCaller {
using PredicateFuncType = std::function<bool(const AnfNodePtr &)>;
class AnfIrVisitor {
public:
virtual void Visit(const AnfNodePtr &);
virtual void Visit(const CNodePtr &);
virtual void Visit(const ValueNodePtr &);
virtual void Visit(const ParameterPtr &);
VisitFuncType Match(const PrimitivePtr &, const std::vector<opt::PredicateFuncType> & = {});
virtual ~AnfVisitor() = default;
VisitFuncType Match(const PrimitivePtr &, const std::vector<PredicateFuncType> & = {});
virtual ~AnfIrVisitor() = default;
};
} // namespace mindspore
#endif // MINDSPORE_CORE_IR_VISITOR_H_

+ 0
- 1
tests/ut/cpp/optimizer/lib_test.cc View File

@@ -24,7 +24,6 @@
#include "ir/func_graph_cloner.h"
#include "ir/manager.h"
#include "ir/value.h"
#include "ir/visitor.h"
#include "frontend/operator/ops.h"
#include "frontend/optimizer/irpass.h"
#include "pipeline/jit/resource.h"


+ 1
- 1
tests/ut/cpp/optimizer/opt_test.cc View File

@@ -20,9 +20,9 @@
#include "common/py_func_graph_fetcher.h"

#include "ir/anf.h"
#include "ir/visitor.h"
#include "ir/func_graph_cloner.h"
#include "frontend/optimizer/opt.h"
#include "frontend/optimizer/anf_visitor.h"
#include "frontend/optimizer/irpass.h"
#include "frontend/optimizer/irpass/arithmetic_simplify.h"



Loading…
Cancel
Save