Common optimization passes

Overview

A set of common optimization passes. More…

// typedefs

typedef std::unordered_map<ngraph::NodeTypeInfo, std::function<bool(const std::shared_ptr<ngraph::Node>&, ngraph::element::Type, size_t idx)>> type_to_fuse_map;

// classes

class ngraph::pass::AddFakeQuantizeFusion;
class ngraph::pass::BatchToSpaceFusion;
class ngraph::pass::BidirectionalGRUSequenceDecomposition;
class ngraph::pass::BidirectionalLSTMSequenceDecomposition;
class ngraph::pass::BidirectionalRNNSequenceDecomposition;
class ngraph::pass::BidirectionalSequenceDecomposition;
class ngraph::pass::BinarizeWeights;
class ngraph::pass::BroadcastElementwiseFusion;
class ngraph::pass::ClampFusion;
class ngraph::pass::ConvToBinaryConv;
class ngraph::pass::ConvertBatchToSpace;
class ngraph::pass::ConvertGRUSequenceToTensorIterator;
class ngraph::pass::ConvertGather0D;
class ngraph::pass::ConvertGather1ToGather7;
class ngraph::pass::ConvertGather7ToGather1;
class ngraph::pass::ConvertInterpolate1ToInterpolate4;
class ngraph::pass::ConvertLSTMSequenceToTensorIterator;
class ngraph::pass::ConvertMVN1ToMVN6;
class ngraph::pass::ConvertPadToGroupConvolution;
class ngraph::pass::ConvertQuantizeDequantize;
class ngraph::pass::ConvertRNNSequenceToTensorIterator;
class ngraph::pass::ConvertScatterElementsToScatter;
class ngraph::pass::ConvertSpaceToBatch;
class ngraph::pass::ConvertTensorIteratorToGRUSequence;
class ngraph::pass::ConvertTensorIteratorToLSTMSequence;
class ngraph::pass::ConvertTensorIteratorToRNNSequence;
class ngraph::pass::DepthToSpaceFusion;
class ngraph::pass::DilatedConvolutionConverter;
class ngraph::pass::EinsumDecomposition;
class ngraph::pass::EliminateUnsqueezeGather;
class ngraph::pass::FakeQuantizeDecomposition;
class ngraph::pass::FakeQuantizeMulFusion;
class ngraph::pass::FakeQuantizeReshapeFusion;
class ngraph::pass::GRUCellDecomposition;
class ngraph::pass::GatherNegativeConstIndicesNormalize;
class ngraph::pass::Gelu7Downgrade;
class ngraph::pass::GeluFusion;
class ngraph::pass::GeluFusionWithErfOne;
class ngraph::pass::GeluFusionWithErfThree;
class ngraph::pass::GeluFusionWithErfTwo;
class ngraph::pass::GroupedStridedSliceOptimizer;
class ngraph::pass::HSigmoidDecomposition;
class ngraph::pass::HSigmoidFusion;
class ngraph::pass::HSigmoidFusionWithClamp;
class ngraph::pass::HSigmoidFusionWithReluDiv;
class ngraph::pass::HSigmoidFusionWithReluMul;
class ngraph::pass::HSigmoidFusionWithoutRelu;
class ngraph::pass::HSwishDecomposition;
class ngraph::pass::HSwishFusion;
class ngraph::pass::HSwishFusionWithClampDiv;
class ngraph::pass::HSwishFusionWithClampMul;
class ngraph::pass::HSwishFusionWithHSigmoidMul;
class ngraph::pass::HSwishFusionWithReluDiv;
class ngraph::pass::HSwishFusionWithReluMul;
class ngraph::pass::HSwishFusionWithoutRelu;
class ngraph::pass::InitNodeInfo;
class ngraph::pass::LSTMCellDecomposition;
class ngraph::pass::LogSoftmaxDecomposition;
class ngraph::pass::MVN6Decomposition;
class ngraph::pass::MVNFusion;
class ngraph::pass::MVNFusionWithConstantsInside;
class ngraph::pass::MVNFusionWithoutConstants;
class ngraph::pass::MimicSetBatchSize;
class ngraph::pass::MishFusion;
class ngraph::pass::MulFakeQuantizeFusion;
class ngraph::pass::NormalizeL2Fusion;
class ngraph::pass::NormalizeL2FusionWithAdd;
class ngraph::pass::NormalizeL2FusionWithMax;
class ngraph::pass::PadFusionAvgPool;
class ngraph::pass::PadFusionConvolution;
class ngraph::pass::PadFusionConvolutionBackpropData;
class ngraph::pass::PadFusionGroupConvolution;
class ngraph::pass::PadFusionGroupConvolutionBackpropData;
class ngraph::pass::PadFusionMaxPool;
class ngraph::pass::Proposal1Scales;
class ngraph::pass::RNNCellDecomposition;
class ngraph::pass::ReduceL1Decomposition;
class ngraph::pass::ReduceL2Decomposition;
class ngraph::pass::ReluFakeQuantizeFusion;
class ngraph::pass::ReshapeAMatMul;
class ngraph::pass::ReshapeTo1D;
class ngraph::pass::Serialize;
class ngraph::pass::SetBatchSize;
class ngraph::pass::SharedSqueeze;
class ngraph::pass::SharedStridedSliceEraser;
class ngraph::pass::ShuffleChannelsFusion;
class ngraph::pass::SoftPlusDecomposition;
class ngraph::pass::SoftPlusFusion;
class ngraph::pass::SoftPlusToMishFusion;
class ngraph::pass::SoftmaxFusion;
class ngraph::pass::SpaceToBatchFusion;
class ngraph::pass::SplitSqueezeConcatFusion;
class ngraph::pass::SqueezeStridedSlice;
class ngraph::pass::StridedSliceOptimization;
class ngraph::pass::StridedSliceSqueeze;
class ngraph::pass::SwishFusion;
class ngraph::pass::SwishFusionWithBeta;
class ngraph::pass::SwishFusionWithSigmoid;
class ngraph::pass::SwishFusionWithSigmoidWithBeta;
class ngraph::pass::SwishFusionWithoutBeta;
class ngraph::pass::TransposeFQReduction;
class ngraph::pass::TransposeFuse;
class ngraph::pass::TransposeReduction;
class ngraph::pass::TransposeSinking;
class ngraph::pass::TransposeToReshape;
class ngraph::pass::UnrollTensorIterator;
class ngraph::pass::UselessStridedSliceEraser;
class ngraph::pass::WeightsDequantizeToFakeQuantize;

Detailed Documentation

A set of common optimization passes.

Typedefs

typedef std::unordered_map<ngraph::NodeTypeInfo, std::function<bool(const std::shared_ptr<ngraph::Node>&, ngraph::element::Type, size_t idx)>> type_to_fuse_map

ConvertPrecision transformation convert precision for entire ngraph::Function List of supported precision conversion: FROM -> TO u8 -> i32 u16 -> i32 u32 -> i32 u64 -> i32 i64 -> i32 f16 -> f32 bool -> u8 bool -> i32.

For all operations from opset1-opset4 this conversions can be applied without adding Conversion operations. That is possible because all operations that produces “FROM” type can produce “TO” type. And for this operations we have created special fuse_type_into_<type> functoin (can be found in cpp file) that performs type fusion into operation.

List of operations that are supported by this transformations for i64 -> i32 conversion: opset4::Parameter opset4::Convert opset4::ShapeOf opset3::NonMaxSuppression opset4::NonMaxSuppression opset4::TopK opset4::NonZero opset4::Bucketize

List of operations that are supported by this transformations for bool -> u8 conversion: LogicalAnd LogicalNot LogicalOr LogicalXor ReduceLogicalAnd ReduceLogicalOr Equal NotEqual Greater GreaterEqual Less LessEqual