Reduce number of Function Validations (#8668)
This commit is contained in:
parent
1ca9592d75
commit
0e749b8b15
@ -110,6 +110,8 @@ void TransformationsPipeline::apply(std::shared_ptr<ov::Function> func) {
|
||||
bool enableInt8;
|
||||
{
|
||||
ngraph::pass::Manager manager;
|
||||
manager.set_per_pass_validation(false);
|
||||
|
||||
enableInt8 = config.enableInt8 && ngraph::pass::low_precision::LowPrecision::isFunctionQuantized(func);
|
||||
if (enableInt8) {
|
||||
manager.register_pass<ngraph::pass::DisableConvertConstantFoldingOnConstPath>(
|
||||
@ -160,6 +162,7 @@ void TransformationsPipeline::apply(std::shared_ptr<ov::Function> func) {
|
||||
{ngraph::element::u4, ngraph::element::u8},
|
||||
};
|
||||
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
manager.register_pass<ngraph::pass::ConvertPrecision>(convert_precision_list);
|
||||
|
||||
auto pass_config = manager.get_pass_config();
|
||||
|
@ -129,6 +129,7 @@ Engine::~Engine() {
|
||||
|
||||
static void TransformationUpToCPUSpecificOpSet(std::shared_ptr<ngraph::Function> nGraphFunc, const bool _enableLPT) {
|
||||
ngraph::pass::Manager manager;
|
||||
manager.set_per_pass_validation(false);
|
||||
manager.register_pass<ngraph::pass::InitNodeInfo>();
|
||||
|
||||
const bool useLpt =
|
||||
@ -187,6 +188,7 @@ static void TransformationUpToCPUSpecificOpSet(std::shared_ptr<ngraph::Function>
|
||||
manager.register_pass<ngraph::pass::low_precision::ConvertSubtractConstant>(
|
||||
std::vector<ngraph::element::Type>{ ngraph::element::i8, ngraph::element::u8, ngraph::element::i4, ngraph::element::u4 });
|
||||
}
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
manager.register_pass<ngraph::pass::ConvertPrecision>(precisions);
|
||||
manager.register_pass<ngraph::pass::EliminateConvert>();
|
||||
|
||||
|
@ -96,6 +96,7 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::CommonOptimizations, "CommonOptimizations",
|
||||
bool ngraph::pass::CommonOptimizations::run_on_function(std::shared_ptr<ngraph::Function> f) {
|
||||
RUN_ON_FUNCTION_SCOPE(CommonOptimizations);
|
||||
ngraph::pass::Manager manager(get_pass_config());
|
||||
manager.set_per_pass_validation(false);
|
||||
|
||||
manager.register_pass<ov::pass::DisableDecompressionConvertConstantFolding>();
|
||||
|
||||
@ -186,6 +187,7 @@ bool ngraph::pass::CommonOptimizations::run_on_function(std::shared_ptr<ngraph::
|
||||
// because we cannot insert any MaxPools since they may prevent
|
||||
// other optimizations
|
||||
manager.register_pass<ngraph::pass::StridesOptimization>();
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
|
||||
manager.run_passes(f);
|
||||
|
||||
|
@ -68,6 +68,7 @@ bool ngraph::pass::MOCTransformations::run_on_function(std::shared_ptr<ngraph::F
|
||||
}
|
||||
|
||||
ngraph::pass::Manager manager(get_pass_config());
|
||||
manager.set_per_pass_validation(false);
|
||||
|
||||
manager.register_pass<ngraph::pass::InitNodeInfo>();
|
||||
if (m_low_precision_enabled) {
|
||||
@ -79,10 +80,15 @@ bool ngraph::pass::MOCTransformations::run_on_function(std::shared_ptr<ngraph::F
|
||||
}
|
||||
manager.register_pass<ngraph::pass::DisableRandomUniformConstantFolding>();
|
||||
manager.register_pass<ngraph::pass::ConstantFolding>();
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
|
||||
// FusedFilteringBoxesBySize transformation has the complex pattern
|
||||
// which can be affected by further transformations. So we have to
|
||||
// execute it at the beginning of the pipeline.
|
||||
// execute it at the beginning of the pipeline. Also, this pass resolves
|
||||
// dynamism, so we have to execute type/shape propagation after.
|
||||
manager.register_pass<ngraph::pass::FuseFilteringBoxesBySize>();
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
|
||||
manager.register_pass<ngraph::pass::ConvertQuantizeDequantize>();
|
||||
manager.register_pass<ngraph::pass::SimplifyShapeOfSubGraph>();
|
||||
if (!m_use_shapes) {
|
||||
|
@ -293,12 +293,18 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::SimplifyShapeOfSubGraph, "SimplifyShapeOfSu
|
||||
bool ngraph::pass::SimplifyShapeOfSubGraph::run_on_function(std::shared_ptr<ngraph::Function> f) {
|
||||
RUN_ON_FUNCTION_SCOPE(SimplifyShapeOfSubGraph);
|
||||
ngraph::pass::Manager manager;
|
||||
manager.set_per_pass_validation(false);
|
||||
manager.register_pass<ngraph::pass::EliminateGatherUnsqueeze>();
|
||||
manager.register_pass<ngraph::pass::SharedShapeOf>();
|
||||
manager.register_pass<ngraph::pass::GroupedGatherElimination>();
|
||||
// GatherNopElimination depends on shape, so it requires shape propagation
|
||||
// if previous transformations has resolved some dynamic shapes.
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
manager.register_pass<ngraph::pass::GatherNopElimination>();
|
||||
manager.register_pass<ngraph::pass::SimplifyGatherShapeOf>();
|
||||
manager.register_pass<ngraph::pass::SimplifySecondInputOfReshape>();
|
||||
// TODO: potentially this Validate is not needed but it requires additional validation
|
||||
manager.register_pass<ngraph::pass::Validate>();
|
||||
manager.run_passes(f);
|
||||
return false;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::ConvertOpSet2ToOpSet1, "ConvertOpSet2ToOpSe
|
||||
bool ngraph::pass::ConvertOpSet2ToOpSet1::run_on_function(std::shared_ptr<ngraph::Function> f) {
|
||||
RUN_ON_FUNCTION_SCOPE(ConvertOpSet2ToOpSet1);
|
||||
ngraph::pass::Manager manager(get_pass_config());
|
||||
manager.set_per_pass_validation(false);
|
||||
|
||||
manager.register_pass<ngraph::pass::ConvertSpaceToBatch>();
|
||||
manager.register_pass<ngraph::pass::ConvertBatchToSpace>();
|
||||
|
@ -21,6 +21,7 @@ NGRAPH_RTTI_DEFINITION(ngraph::pass::ConvertOpSet3ToOpSet2, "ConvertOpSet3ToOpSe
|
||||
bool ngraph::pass::ConvertOpSet3ToOpSet2::run_on_function(std::shared_ptr<ngraph::Function> f) {
|
||||
RUN_ON_FUNCTION_SCOPE(ConvertOpSet3ToOpSet2);
|
||||
ngraph::pass::Manager manager(get_pass_config());
|
||||
manager.set_per_pass_validation(false);
|
||||
|
||||
manager.register_pass<ngraph::pass::ConvertBroadcast3>();
|
||||
manager.register_pass<ngraph::pass::ConvertShapeOf3>();
|
||||
|
@ -55,9 +55,8 @@ public:
|
||||
/// \brief Set flag to enable/disable running Validate pass after executing
|
||||
/// each registered pass
|
||||
/// \param new_state Value "true" enables Validate pass run; "false", otherwise
|
||||
void set_per_pass_validation(bool new_state) {
|
||||
m_per_pass_validation = new_state;
|
||||
}
|
||||
void set_per_pass_validation(bool new_state);
|
||||
|
||||
/// \brief Callback is a lambda function that can be used by registered transformations.
|
||||
/// The main purpose of this callback is to provide a way for plugins to disable/enable
|
||||
/// transformations based on some conditions. In some cases plugins may want not to
|
||||
|
@ -44,6 +44,10 @@ ov::pass::Manager::~Manager() = default;
|
||||
|
||||
ov::pass::Manager::Manager(std::shared_ptr<ov::pass::PassConfig> pass_config) : m_pass_config(std::move(pass_config)) {}
|
||||
|
||||
void ov::pass::Manager::set_per_pass_validation(bool new_state) {
|
||||
m_per_pass_validation = new_state;
|
||||
}
|
||||
|
||||
void ov::pass::Manager::run_passes(shared_ptr<ov::Function> func) {
|
||||
NGRAPH_SUPPRESS_DEPRECATED_START
|
||||
OV_ITT_SCOPED_TASK(ov::itt::domains::nGraph, "pass::Manager::run_passes");
|
||||
|
Loading…
Reference in New Issue
Block a user