* Fix ElementwiseInputReshape transformation
Reshape node always needs to be inserted
in order to preserve ShapeOf nodes (reshapability of a model) that can potentially be above
elementwise node.
Refactor EltwiseInputReshape_test and EltwiseInputNormalization_test since the logic of maintaining reshape for eltwise has been changed.
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Merge EltwiseInputNormalization and EltwiseInputReshape transformations
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Remove Unsqueeze from Fused_op
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix code after code review #1
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix code after review #2
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix code review #4
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Perform full normalization based on shapes of all inputs to eltwise
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Refactor much to avoid old API and edges with unsqueeze_dims attribute
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix code after review
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Redundant op::Max CF removal
* Redundant op::Min CF removal
* Redundant op::Sum & op::Product CF removal
* CF Min and Max using evaluate()
* Arithmetic reduction CF pass removal
* Quantize op CF pass removal
* Convert op CF pass removal
* Logical reduction CF pass removal
* Select op CF pass removal
* OneHot CF pass removal
* Code formatting
* ScatterElements CF pass removal
* Gather CF pass removal
* Disable a Quantize op test that fails in CI
* CF pass cleanup
* Convert op cleanup and test adaptation to spec
* Possible fix for failing VPU tests
* Limit the types used in OneHot::evaluate
* Quantize op evaluator removal
* Refactor of Gather evaluator
* Remove obsoleted v0::Broadcast and BroadcastLike operators
* remove NGRAPH_DEPRECATED marks from autobroadcast functions
* restore NGRAPH_SUPPRESS_DEPRECATED_START in autobroadcast.cpp
* Fixed concat output name when decomposing shape_of in CF
* Added friendly_name propagation for CF pass
* Propagate runtime info inside ConstantFolding pass
* Fixed rt info merge strategy to avoid cases when merge is not implemented but attributes number is equal to 1
* 1d case optimization
* code refactor
* concat optimization
* removed using template for concat
* unit tests to concat constant folding
* synchro with current master
* v1::Pad reference implementation
* ut fix: pad_negative_exterior_1d
* ut fix: pad_negative_exterior_1d_check_limits & pad_edge_1d
* Code formatting
* ut fix: pad_edge_1d_top_neg & pad_edge_1d_top_neg_bigger_than_tensor
* More Pad UT fixes
* Pad UT fixes: REFLECT mode
* Fix all Pad UTs
* Switch Pad evaluation in INT backend
* Non-template solution to v1::Pad::evaluate
* Always create v1::Pad with 4 inputs
* VS compilation error fix
* Python test fix
* Remove the v0::Pad constant folding pass
* Some extra checks in v1::Pad evaluator
* Code formatting
* Remove an obsolete CF test
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.