From 60d168adec9dfdaf8ee2399144a718888066cdbd Mon Sep 17 00:00:00 2001 From: He Wei Date: Thu, 16 Jul 2020 16:14:09 +0800 Subject: [PATCH] Decouple ir from optimizer --- .../ccsrc/frontend/optimizer/anf_visitor.h | 27 +++++++++++++++++++ mindspore/ccsrc/frontend/optimizer/irpass.h | 2 +- .../optimizer/irpass/arithmetic_simplify.h | 4 +-- .../optimizer/irpass/branch_culling.h | 2 +- .../optimizer/irpass/cast_eliminate.cc | 2 +- .../optimizer/irpass/cast_eliminate.h | 2 +- .../ccsrc/frontend/optimizer/irpass/convert.h | 2 +- .../optimizer/irpass/env_item_eliminate.h | 4 +-- .../optimizer/irpass/grad_var_prepare.cc | 2 +- .../optimizer/irpass/grad_var_prepare.h | 2 +- .../optimizer/irpass/gradient_eliminate.h | 2 +- .../optimizer/irpass/incorporate_call.h | 2 +- .../optimizer/irpass/incorporate_getitem.h | 4 +-- .../irpass/indexed_slices_eliminate.h | 2 +- .../ccsrc/frontend/optimizer/irpass/inline.h | 2 +- .../optimizer/irpass/item_tuple_eliminate.h | 4 +-- .../optimizer/irpass/mark_interface_fusion.h | 2 +- .../frontend/optimizer/irpass/merge_addn.h | 2 +- .../frontend/optimizer/irpass/minmax_grad.h | 2 +- .../frontend/optimizer/irpass/param_replace.h | 2 +- .../optimizer/irpass/partial_eliminate.h | 2 +- .../optimizer/irpass/prim_eliminate.h | 2 +- .../optimizer/irpass/reduce_eliminate.h | 2 +- .../optimizer/irpass/reshape_eliminate.h | 4 +-- .../optimizer/irpass/special_op_eliminate.h | 4 +-- .../optimizer/irpass/specialize_transform.h | 2 +- .../optimizer/irpass/symbol_resolver.h | 2 +- .../optimizer/irpass/tile_eliminate.h | 2 +- .../optimizer/irpass/transpose_eliminate.h | 2 +- mindspore/ccsrc/frontend/optimizer/opt.h | 2 +- .../frontend/optimizer}/optimizer_caller.h | 10 +++---- mindspore/ccsrc/utils/graph_utils_extends.cc | 4 +-- mindspore/core/ir/anf.h | 10 +++---- mindspore/core/ir/anf_extends.cc | 6 ++--- mindspore/core/ir/pattern_matcher.h | 5 ++-- mindspore/core/ir/visitor.cc | 10 +++---- mindspore/core/ir/visitor.h | 9 ++++--- tests/ut/cpp/optimizer/lib_test.cc | 1 - tests/ut/cpp/optimizer/opt_test.cc | 2 +- 39 files changed, 90 insertions(+), 64 deletions(-) create mode 100644 mindspore/ccsrc/frontend/optimizer/anf_visitor.h rename mindspore/{core/ir => ccsrc/frontend/optimizer}/optimizer_caller.h (81%) diff --git a/mindspore/ccsrc/frontend/optimizer/anf_visitor.h b/mindspore/ccsrc/frontend/optimizer/anf_visitor.h new file mode 100644 index 0000000000..a1dd3aed04 --- /dev/null +++ b/mindspore/ccsrc/frontend/optimizer/anf_visitor.h @@ -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 +#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_ diff --git a/mindspore/ccsrc/frontend/optimizer/irpass.h b/mindspore/ccsrc/frontend/optimizer/irpass.h index fd9dfc4b06..31aaeac781 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/arithmetic_simplify.h b/mindspore/ccsrc/frontend/optimizer/irpass/arithmetic_simplify.h index f5e580febc..699005f7bf 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/arithmetic_simplify.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/arithmetic_simplify.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/branch_culling.h b/mindspore/ccsrc/frontend/optimizer/irpass/branch_culling.h index ddf6366e01..9dff22352e 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/branch_culling.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/branch_culling.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.cc b/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.cc index ddb84806e1..e556402c44 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.cc +++ b/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.cc @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.h index 88996a076e..46c86ab716 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/cast_eliminate.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/convert.h b/mindspore/ccsrc/frontend/optimizer/irpass/convert.h index 170b31a724..f05fd8cd4c 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/convert.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/convert.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/env_item_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/env_item_eliminate.h index 525cd087d6..1fee007a88 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/env_item_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/env_item_eliminate.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.cc b/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.cc index 44c1b62fa5..8950084437 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.cc +++ b/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.cc @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.h b/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.h index e7b83a6d5b..d9040044d9 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/grad_var_prepare.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/gradient_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/gradient_eliminate.h index a5d515b48b..2018341d5a 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/gradient_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/gradient_eliminate.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_call.h b/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_call.h index 91763abd4d..ccfef5bcfb 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_call.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_call.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_getitem.h b/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_getitem.h index d1bb62aa15..9c02df6b2f 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_getitem.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/incorporate_getitem.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/indexed_slices_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/indexed_slices_eliminate.h index 821cfd10fb..56385c0001 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/indexed_slices_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/indexed_slices_eliminate.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/inline.h b/mindspore/ccsrc/frontend/optimizer/irpass/inline.h index e2f85be11c..0be228f44b 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/inline.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/inline.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/item_tuple_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/item_tuple_eliminate.h index 6c8a8d1089..6b5a56a7fd 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/item_tuple_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/item_tuple_eliminate.h @@ -21,8 +21,8 @@ #include #include -#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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/mark_interface_fusion.h b/mindspore/ccsrc/frontend/optimizer/irpass/mark_interface_fusion.h index 545a875837..1f38fc758b 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/mark_interface_fusion.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/mark_interface_fusion.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h b/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h index 0dee80714b..706df7669b 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/merge_addn.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/minmax_grad.h b/mindspore/ccsrc/frontend/optimizer/irpass/minmax_grad.h index 5cf4f203d8..079e28528d 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/minmax_grad.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/minmax_grad.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/param_replace.h b/mindspore/ccsrc/frontend/optimizer/irpass/param_replace.h index 8e72128b93..5b8a4030f1 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/param_replace.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/param_replace.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/partial_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/partial_eliminate.h index fa4e680516..dc63789a4b 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/partial_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/partial_eliminate.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/prim_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/prim_eliminate.h index 13b4c6dc3f..8bce179287 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/prim_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/prim_eliminate.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/reduce_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/reduce_eliminate.h index a5484a4ccd..5543783f5f 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/reduce_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/reduce_eliminate.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/reshape_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/reshape_eliminate.h index 933fc8db68..0270224a26 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/reshape_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/reshape_eliminate.h @@ -20,8 +20,8 @@ #include #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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/special_op_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/special_op_eliminate.h index 97e3459be4..09b54afb75 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/special_op_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/special_op_eliminate.h @@ -22,9 +22,9 @@ #include #include -#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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/specialize_transform.h b/mindspore/ccsrc/frontend/optimizer/irpass/specialize_transform.h index 650cf33bd8..6cb9312028 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/specialize_transform.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/specialize_transform.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/symbol_resolver.h b/mindspore/ccsrc/frontend/optimizer/irpass/symbol_resolver.h index 76da4fe839..73dc395c0b 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/symbol_resolver.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/symbol_resolver.h @@ -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" diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/tile_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/tile_eliminate.h index f68a348776..decfd6a995 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/tile_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/tile_eliminate.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/irpass/transpose_eliminate.h b/mindspore/ccsrc/frontend/optimizer/irpass/transpose_eliminate.h index 7c7f773d3a..ecf8b92743 100644 --- a/mindspore/ccsrc/frontend/optimizer/irpass/transpose_eliminate.h +++ b/mindspore/ccsrc/frontend/optimizer/irpass/transpose_eliminate.h @@ -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 { diff --git a/mindspore/ccsrc/frontend/optimizer/opt.h b/mindspore/ccsrc/frontend/optimizer/opt.h index e1b2a16d9c..32f32803a5 100644 --- a/mindspore/ccsrc/frontend/optimizer/opt.h +++ b/mindspore/ccsrc/frontend/optimizer/opt.h @@ -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 { diff --git a/mindspore/core/ir/optimizer_caller.h b/mindspore/ccsrc/frontend/optimizer/optimizer_caller.h similarity index 81% rename from mindspore/core/ir/optimizer_caller.h rename to mindspore/ccsrc/frontend/optimizer/optimizer_caller.h index 53d7ac3f2f..ffb70b28a1 100644 --- a/mindspore/core/ir/optimizer_caller.h +++ b/mindspore/ccsrc/frontend/optimizer/optimizer_caller.h @@ -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 #include "ir/anf.h" +#include "ir/visitor.h" namespace mindspore { namespace opt { class Optimizer; using OptimizerPtr = std::shared_ptr; using OptimizerWeakPtr = std::weak_ptr; - -using PredicateFuncType = std::function; +using PredicateFuncType = mindspore::PredicateFuncType; } // namespace opt class OptimizerCaller { @@ -36,4 +36,4 @@ class OptimizerCaller { }; using OptimizerCallerPtr = std::shared_ptr; } // namespace mindspore -#endif // MINDSPORE_CORE_IR_OPTIMIZER_CALLER_H_ +#endif // MINDSPORE_CCSRC_OPTIMIZER_OPTIMIZER_CALLER_H_ diff --git a/mindspore/ccsrc/utils/graph_utils_extends.cc b/mindspore/ccsrc/utils/graph_utils_extends.cc index 852dd0e3f2..a6f2594cd1 100644 --- a/mindspore/ccsrc/utils/graph_utils_extends.cc +++ b/mindspore/ccsrc/utils/graph_utils_extends.cc @@ -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); } } diff --git a/mindspore/core/ir/anf.h b/mindspore/core/ir/anf.h index 90ef6228a8..092e70e828 100644 --- a/mindspore/core/ir/anf.h +++ b/mindspore/core/ir/anf.h @@ -67,7 +67,7 @@ class BaseRef; class Var; using VarPtr = std::shared_ptr; -class AnfVisitor; +class AnfIrVisitor; class ParamValue; using ParamValuePtr = std::shared_ptr; @@ -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; diff --git a/mindspore/core/ir/anf_extends.cc b/mindspore/core/ir/anf_extends.cc index 4fb4d6598c..c50ae91034 100644 --- a/mindspore/core/ir/anf_extends.cc +++ b/mindspore/core/ir/anf_extends.cc @@ -93,7 +93,7 @@ std::string CNode::fullname_with_scope() { return fullname_with_scope_; } -void CNode::accept(AnfVisitor *v) { v->Visit(shared_from_base()); } -void ValueNode::accept(AnfVisitor *v) { v->Visit(shared_from_base()); } -void Parameter::accept(AnfVisitor *v) { v->Visit(shared_from_base()); } +void CNode::accept(AnfIrVisitor *v) { v->Visit(shared_from_base()); } +void ValueNode::accept(AnfIrVisitor *v) { v->Visit(shared_from_base()); } +void Parameter::accept(AnfIrVisitor *v) { v->Visit(shared_from_base()); } } // namespace mindspore diff --git a/mindspore/core/ir/pattern_matcher.h b/mindspore/core/ir/pattern_matcher.h index 6acfb130c5..6a8de5a8a5 100644 --- a/mindspore/core/ir/pattern_matcher.h +++ b/mindspore/core/ir/pattern_matcher.h @@ -22,8 +22,7 @@ #include #include -#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 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)); } diff --git a/mindspore/core/ir/visitor.cc b/mindspore/core/ir/visitor.cc index 9e63f4f9c1..3866052e97 100644 --- a/mindspore/core/ir/visitor.cc +++ b/mindspore/core/ir/visitor.cc @@ -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(vnode)) { auto func_graph = GetValueNode(vnode); Visit(func_graph->output()); } } -void AnfVisitor::Visit(const ParameterPtr &) {} +void AnfIrVisitor::Visit(const ParameterPtr &) {} -VisitFuncType AnfVisitor::Match(const PrimitivePtr &prim, const std::vector &funcs) { +VisitFuncType AnfIrVisitor::Match(const PrimitivePtr &prim, const std::vector &funcs) { auto fn = [prim, funcs, this](const AnfNodePtr &node) { if (!IsPrimitiveCNode(node, prim)) { return; diff --git a/mindspore/core/ir/visitor.h b/mindspore/core/ir/visitor.h index b0bb733b6b..c6accbefbb 100644 --- a/mindspore/core/ir/visitor.h +++ b/mindspore/core/ir/visitor.h @@ -18,18 +18,19 @@ #define MINDSPORE_CORE_IR_VISITOR_H_ #include -#include "ir/optimizer_caller.h" +#include "ir/anf.h" namespace mindspore { using VisitFuncType = std::function; -class AnfVisitor : public OptimizerCaller { +using PredicateFuncType = std::function; +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 & = {}); - virtual ~AnfVisitor() = default; + VisitFuncType Match(const PrimitivePtr &, const std::vector & = {}); + virtual ~AnfIrVisitor() = default; }; } // namespace mindspore #endif // MINDSPORE_CORE_IR_VISITOR_H_ diff --git a/tests/ut/cpp/optimizer/lib_test.cc b/tests/ut/cpp/optimizer/lib_test.cc index c0d5523edc..48865a10d2 100644 --- a/tests/ut/cpp/optimizer/lib_test.cc +++ b/tests/ut/cpp/optimizer/lib_test.cc @@ -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" diff --git a/tests/ut/cpp/optimizer/opt_test.cc b/tests/ut/cpp/optimizer/opt_test.cc index 679d9c6c54..bf70f597d7 100644 --- a/tests/ut/cpp/optimizer/opt_test.cc +++ b/tests/ut/cpp/optimizer/opt_test.cc @@ -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"