nGraph Transformations refactoring (#931)
authorGleb Kazantaev <gleb.kazantaev@intel.com>
Mon, 27 Jul 2020 16:47:37 +0000 (19:47 +0300)
committerGitHub <noreply@github.com>
Mon, 27 Jul 2020 16:47:37 +0000 (19:47 +0300)
commitbd42f09e98e0c155a1b9e75c21d0f51b34708bc9
tree614284717489bddd6891a78bcb3a876e1bbf7073
parent4ae03a0d5dda6eab2cc9e68c806c77c4f3cb9c0e
nGraph Transformations refactoring (#931)

This PR introduces next changes:
1. Transformations *_tbl.hpp files were replaced with direct registration in cpp files.
2. Plugins use pass::Manager to call conversion passes.
3. Transformations callback was moved to PassBase class as there is no more need to keep it in separate class
4. All pattern based transformations must be inherited from MatcherPass class. GraphRewrite class will be used only for matchers registration and execution on function.
MatcherPass class adds new features to pattern-based transformations approach:
* Allows to run matcher pass on a single node.
* Operations that were created inside transformation callback can be added to execution list to be available for pattern matching within single GraphRewrite.
5. GraphRewrite MatchClosure was replaced with MatcherPass. So all matchers will be registered as a MatcherPass.
6. Added pass::Manager::clear_state() method to avoid dependency with nodes that no longer belongs to function after replacement.
7.  Some representative transformations were updated to use MatcherPass as an example.
8.  Mul->Add sequence fusion transformation was replaced with LinOpSequenceFusion.
9. Pattern and callback registration code was moved to class c-tors (will be finished for remaining passes in other PR) .
10. Updated pass::Manager to get pass names only when NGRAPH_PROFILE_PASS_ENABLE enabled.
11. Moving towards removing PassProperty.
12. Added ngraph::pattern::wrap_type<T>(inputs, pred) to simplify pattern creation.
13. GraphRewrite was updated to execute MatcherPass more efficient.
154 files changed:
docs/IE_PLUGIN_DG/NewTransformation.md
docs/examples/example_ngraph_utils.cpp
docs/template_plugin/src/template_executable_network.cpp
docs/template_plugin/src/template_function_transformation.cpp
docs/template_plugin/src/template_function_transformation.hpp
docs/template_plugin/src/template_pattern_transformation.cpp
docs/template_plugin/src/template_pattern_transformation.hpp
inference-engine/src/cldnn_engine/cldnn_engine.cpp
inference-engine/src/inference_engine/cnn_network_ngraph_impl.cpp
inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp
inference-engine/src/transformations/include/transformations/batch_norm_decomposition.hpp
inference-engine/src/transformations/include/transformations/common_optimizations/common_optimizations.hpp
inference-engine/src/transformations/include/transformations/constant_eltwise_reduction.hpp [deleted file]
inference-engine/src/transformations/include/transformations/convert_batch_to_space.hpp
inference-engine/src/transformations/include/transformations/convert_broadcast_to_tiles.hpp
inference-engine/src/transformations/include/transformations/convert_depth_to_space.hpp
inference-engine/src/transformations/include/transformations/convert_divide.hpp
inference-engine/src/transformations/include/transformations/convert_gelu.hpp
inference-engine/src/transformations/include/transformations/convert_minimum_to_power_and_max.hpp
inference-engine/src/transformations/include/transformations/convert_mod.hpp
inference-engine/src/transformations/include/transformations/convert_negative.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/conv_bias_fusion.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_convolutions.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_nms_4_to_legacy.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy_tbl.hpp [deleted file]
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/fc_bias_fusion.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/reshape_1d_ops.hpp
inference-engine/src/transformations/include/transformations/convert_opset1_to_legacy/reshape_fully_connected.hpp
inference-engine/src/transformations/include/transformations/convert_opset2_to_opset1/convert_opset2_to_opset1.hpp
inference-engine/src/transformations/include/transformations/convert_opset2_to_opset1/convert_opset2_to_opset1_tbl.hpp [deleted file]
inference-engine/src/transformations/include/transformations/convert_opset3_to_opset2/convert_broadcast3.hpp
inference-engine/src/transformations/include/transformations/convert_opset3_to_opset2/convert_nms3.hpp
inference-engine/src/transformations/include/transformations/convert_opset3_to_opset2/convert_opset3_to_opset2.hpp
inference-engine/src/transformations/include/transformations/convert_opset3_to_opset2/convert_opset3_to_opset2_tbl.hpp [deleted file]
inference-engine/src/transformations/include/transformations/convert_opset3_to_opset2/convert_shuffle_channels3.hpp
inference-engine/src/transformations/include/transformations/convert_opset3_to_opset2/convert_topk3.hpp
inference-engine/src/transformations/include/transformations/convert_reduce_to_pooling.hpp
inference-engine/src/transformations/include/transformations/convert_space_to_batch.hpp
inference-engine/src/transformations/include/transformations/convert_space_to_depth.hpp
inference-engine/src/transformations/include/transformations/convert_subtract.hpp
inference-engine/src/transformations/include/transformations/depth_to_space_fusion.hpp
inference-engine/src/transformations/include/transformations/lin_op_sequence_fusoin.hpp [new file with mode: 0644]
inference-engine/src/transformations/include/transformations/pull_transpose_through_fq.hpp
inference-engine/src/transformations/include/transformations/utils/pass_param.hpp [deleted file]
inference-engine/src/transformations/src/transformations/batch_norm_decomposition.cpp
inference-engine/src/transformations/src/transformations/common_optimizations/common_optimizations.cpp
inference-engine/src/transformations/src/transformations/constant_eltwise_reduction.cpp [deleted file]
inference-engine/src/transformations/src/transformations/convert_batch_to_space.cpp
inference-engine/src/transformations/src/transformations/convert_broadcast_to_tiles.cpp
inference-engine/src/transformations/src/transformations/convert_depth_to_space.cpp
inference-engine/src/transformations/src/transformations/convert_divide.cpp
inference-engine/src/transformations/src/transformations/convert_minimum_to_power_and_max.cpp
inference-engine/src/transformations/src/transformations/convert_mod.cpp
inference-engine/src/transformations/src/transformations/convert_negative.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/conv_bias_fusion.cpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_convolutions.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_gather_to_gather_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_gathertree_to_gathertree_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_gelu.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_hard_sigmoid_to_hard_sigmoid_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_interpolate_to_interp_or_resample.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_lrn_to_lrn_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_matmul_to_fc_or_gemm.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_nms_4_to_legacy.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_nms_to_nms_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_normalizel2_to_normalize_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_one_hot_to_one_hot_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_opset1_to_legacy.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_pad_to_pad_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_power_to_power_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_prelu_to_relu_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_proposal_to_proposal_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_selu_to_selu_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_sqrt_to_power_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_strided_slice_to_crop.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_tile_to_ie_tile.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_topk_to_topk_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/fc_bias_fusion.cpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/reshape_1d_ops.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/reshape_fully_connected.cpp
inference-engine/src/transformations/src/transformations/convert_opset2_to_opset1/convert_opset2_to_opset1.cpp
inference-engine/src/transformations/src/transformations/convert_opset3_to_opset2/convert_opset3_to_opset2.cpp
inference-engine/src/transformations/src/transformations/convert_opset3_to_opset2/convert_shuffle_channels3.cpp
inference-engine/src/transformations/src/transformations/convert_space_to_batch.cpp
inference-engine/src/transformations/src/transformations/convert_space_to_depth.cpp
inference-engine/src/transformations/src/transformations/convert_subtract.cpp
inference-engine/src/transformations/src/transformations/depth_to_space_fusion.cpp
inference-engine/src/transformations/src/transformations/lin_op_sequence_fusion.cpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/pull_transpose_through_fq.cpp
inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_cells_to_cells_ie_test.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_divide.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_gather_to_gather_ie.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_matmul_test.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_nms4_test.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_nms_to_nms_ie_test.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_strided_slice_to_crop_test.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_topk_test.cpp
inference-engine/tests/functional/inference_engine/transformations/depth_to_space_fusion_test.cpp
inference-engine/tests/functional/inference_engine/transformations/fc_bias_fusion_test.cpp
inference-engine/tests/functional/inference_engine/transformations/lin_op_sequence_fusion_test.cpp [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/transformations/ngraph_depth_to_space_transform_test.cpp
inference-engine/tests/functional/inference_engine/transformations/ngraph_fq_transpose_test.cpp
inference-engine/tests/functional/inference_engine/transformations/ngraph_mode_decomposition_test.cpp
inference-engine/tests/functional/plugin/cpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp
inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp
inference-engine/tests/ie_test_utils/common_test_utils/ngraph_test_utils.hpp
inference-engine/tests/unit/inference_engine/CMakeLists.txt
ngraph/src/ngraph/CMakeLists.txt
ngraph/src/ngraph/node.cpp
ngraph/src/ngraph/pass/constant_folding.cpp
ngraph/src/ngraph/pass/constant_folding_split.cpp
ngraph/src/ngraph/pass/constant_folding_variadic_split.cpp
ngraph/src/ngraph/pass/graph_rewrite.cpp
ngraph/src/ngraph/pass/graph_rewrite.hpp
ngraph/src/ngraph/pass/manager.cpp
ngraph/src/ngraph/pass/manager.hpp
ngraph/src/ngraph/pass/pass.cpp
ngraph/src/ngraph/pass/pass.hpp
ngraph/src/ngraph/pass/visualize_tree.cpp
ngraph/src/ngraph/pattern/matcher.cpp
ngraph/src/ngraph/pattern/matcher.hpp
ngraph/src/ngraph/pattern/op/label.cpp
ngraph/src/ngraph/pattern/op/label.hpp
ngraph/src/ngraph/pattern/op/pattern.cpp
ngraph/src/ngraph/pattern/op/pattern.hpp
ngraph/src/ngraph/pattern/op/wrap_type.cpp [new file with mode: 0644]
ngraph/src/ngraph/pattern/op/wrap_type.hpp [new file with mode: 0644]
ngraph/test/CMakeLists.txt
ngraph/test/constant_folding.cpp
ngraph/test/graph_rewrite.cpp [new file with mode: 0644]
ngraph/test/matcher_pass.cpp [new file with mode: 0644]
ngraph/test/pattern.cpp