[CPU] Enable conditional compilation for graph optimizer (#15478)

This commit is contained in:
Fang Xu authored and GitHub committed 2023-03-03 11:55:39 +04:00
1 parent 84a42cde61
commit 7deb9090bf
2 files changed
+69

No files matched your search

@@ -230,12 +230,16 @@ void GraphOptimizer::FuseConvolutionMatMulDeconvAndBias(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionMatMulDeconvAndBias_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!isSuitableChildNode(parentNode, childNode)) {
parent++;
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionMatMulDeconvAndBias_ChildNode);
auto childs = childNode->childEdges;
auto parents = childNode->parentEdges;
@@ -331,12 +335,16 @@ void GraphOptimizer::FuseDeconvolutionAndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseDeconvolutionAndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!parentNode->canFuse(childNode)) {
parent++;
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseDeconvolutionAndSimpleOperation_ChildNode);
childNode->fuseInto(parentNode);
auto parentEdges = childNode->parentEdges;
@@ -409,12 +417,16 @@ void GraphOptimizer::FuseMultiplyAndAdd(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseMultiplyAndAdd_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!isSuitableChildNode(parentNode, childNode)) {
parent++;
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseMultiplyAndAdd_ChildNode);
auto childs = childNode->childEdges;
auto parents = childNode->parentEdges;
@@ -500,12 +512,16 @@ void GraphOptimizer::MergeConvertAndScaleShift(Graph& graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(MergeConvertAndScaleShift_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!isSuitableChildNode(childNode)) {
parent++;
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(MergeConvertAndScaleShift_ChildNode);
auto parents = parentNode->parentEdges;
for (size_t i = 0; i < parents.size(); i++) {
auto p_edge = parents[i].lock();
@@ -701,6 +717,8 @@ void GraphOptimizer::FuseConvolutionAndZeroPoints(Graph &graph) {
auto conv = graphNodes[i];
if (!isSuitableConvNode(conv)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionAndZeroPoints_ConvNode);
auto dataEltwise = conv->getParentEdgesAtPort(0)[0]->getParent();
auto weightsEltwise = conv->getParentEdgesAtPort(1)[0]->getParent();
if (initializeInputZeroPoints(conv, dataEltwise, weightsEltwise)) {
@@ -742,6 +760,8 @@ void GraphOptimizer::FuseFullyConnectedAndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseFullyConnectedAndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!parentNode->canFuse(childNode)) {
parent++;
@@ -786,6 +806,8 @@ void GraphOptimizer::FuseMatMulAndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseMatMulAndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!parentNode->canFuse(childNode)) {
parent++;
@@ -932,9 +954,13 @@ void GraphOptimizer::FuseConvolutionAndDWConvolution(Graph &graph) {
auto parentConvNode = graphNodes[i];
if (!isSuitableParentConvolution(parentConvNode)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionAndDWConvolution_ParentConv);
auto childConvNode = parentConvNode->getChildEdgeAt(0)->getChild();
if (!isSuitableChildConvolution(parentConvNode, childConvNode)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionAndDWConvolution_ChildConv);
if (!isFusingWorthwhile(parentConvNode, childConvNode)) continue;
parentConvNode->addFusedNode(childConvNode);
@@ -965,6 +991,8 @@ void GraphOptimizer::FuseConvolutionAndSimpleOperationThroughMaxPool(Graph &grap
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionAndSimpleOperationThroughMaxPool_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (childNode->getAlgorithm() != Algorithm::PoolingMax || childNode->getChildEdges().size() != 1) {
parent++;
@@ -1023,6 +1051,9 @@ void GraphOptimizer::FuseConvolutionAndSimpleOperation(Graph &graph) {
parent++;
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseConvolutionAndSimpleOperation_ParentNode);
const auto parentNodeType = parentNode->getType();
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
@@ -1074,9 +1105,13 @@ void GraphOptimizer::FusePoolingAndFakeQuantize(Graph &graph) {
auto parent = graphNodes[i];
if (!isSuitableParentNode(parent)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FusePoolingAndFakeQuantize_ParentNode);
auto child = parent->getChildEdgeAt(0)->getChild();
if (!isSuitableChildNode(child)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FusePoolingAndFakeQuantize_ChildNode);
child->fuseInto(parent);
auto parents = child->parentEdges;
@@ -1401,6 +1436,8 @@ void GraphOptimizer::FuseMVNAndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseMVNAndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!parentNode->canFuse(childNode)) {
parent++;
@@ -1456,12 +1493,16 @@ void GraphOptimizer::FuseInterpolateAndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseInterpolateAndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!isSuitableChildNode(parentNode, childNode)) {
parent++;
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseInterpolateAndSimpleOperation_ChildNode);
childNode->fuseInto(parentNode);
if (childNode->getType() == Type::FakeQuantize || childNode->getType() == Type::Eltwise) {
@@ -1494,6 +1535,8 @@ void GraphOptimizer::FuseNormalizeL2AndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseNormalizeL2AndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!parentNode->canFuse(childNode)) {
parent++;
@@ -1532,6 +1575,8 @@ void GraphOptimizer::FuseReduceAndSimpleOperation(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseReduceAndSimpleOperation_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!parentNode->canFuse(childNode)) {
parent++;
@@ -1594,6 +1639,8 @@ void GraphOptimizer::FuseEltwiseAndSimple(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseEltwiseAndSimple_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if ((parentNode->isDynamicNode() && !childNode->isDynamicNode()) || (!parentNode->isDynamicNode() && childNode->isDynamicNode())) {
@@ -1606,6 +1653,8 @@ void GraphOptimizer::FuseEltwiseAndSimple(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(FuseEltwiseAndSimple_ChildNode);
childNode->fuseInto(parentNode);
if (childNode->getType() == Type::FakeQuantize) {
@@ -1799,9 +1848,13 @@ void GraphOptimizer::FuseClampAndFakeQuantize(Graph &graph) {
auto parent = graphNodes[i];
if (!isSuitableClampNode(parent)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FuseClampAndFakeQuantize_ClalmpNode);
auto child = parent->getChildEdgeAt(0)->getChild();
if (!isSuitableFakeQuantizeNode(child)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FuseClampAndFakeQuantize_QuantizeNode);
if (fuseClampAndFakeQuantizeNodes(parent, child)) {
graph.DropNode(parent);
}
@@ -1957,9 +2010,13 @@ void GraphOptimizer::FusePerformedAsScaleShiftAndFakeQuantize(Graph &graph) {
auto parent = graphNodes[i];
if (!isSuitableScaleShiftNode(parent)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FusePerformedAsScaleShiftAndFakeQuantize_ShiftNode);
auto child = parent->getChildEdgeAt(0)->getChild();
if (!isSuitableFakeQuantizeNode(child)) continue;
CPU_GRAPH_OPTIMIZER_SCOPE(FusePerformedAsScaleShiftAndFakeQuantize_QuantizeNode);
if (fuseScaleShiftAndFakeQuantizeNodes(parent, child)) {
auto parentEdges = parent->parentEdges;
for (auto &parentEdge : parentEdges) {
@@ -2163,11 +2220,16 @@ void GraphOptimizer::MergeTransposeAndReorder(Graph &graph) {
if (!isSuitableParentNode(parentNode)) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(MergeTransposeAndReorder_ParentNode);
auto childNode = parentNode->getChildEdgeAt(0)->getChild();
if (!isSuitableChildNode(childNode)) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(MergeTransposeAndReorder_ChildNode);
if (checkAscendingSummaryOrder(parentNode, childNode)) {
mergeTransposeAndReorder(parentNode, childNode);
}
@@ -2190,6 +2252,8 @@ void GraphOptimizer::reshapeRnnSeq(Graph &graph) {
continue;
}
CPU_GRAPH_OPTIMIZER_SCOPE(reshapeRnnSeq_ParentNode);
auto childrenEdges = parentNode->getChildEdgesAtPort(0);
auto minDims = parentNode->getOutputShapeAtPort(0).getMinDims();
auto maxDims = parentNode->getOutputShapeAtPort(0).getMaxDims();
+5
View File
@@ -27,10 +27,15 @@ OV_ITT_DOMAIN(intel_cpu_LT);
#if defined(SELECTIVE_BUILD_ANALYZER)
# define CPU_LPT_SCOPE(region) OV_SCOPE(intel_cpu, region)
# define CPU_GRAPH_OPTIMIZER_SCOPE(region) OV_SCOPE(intel_cpu, region)
#elif defined(SELECTIVE_BUILD)
# define CPU_LPT_SCOPE(region) \
if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(intel_cpu, _, region)) == 0) \
throw ov::Exception(std::string(OV_PP_TOSTRING(OV_PP_CAT3(ov_op, _, region))) + " is disabled!")
# define CPU_GRAPH_OPTIMIZER_SCOPE(region) \
if (OV_CC_SCOPE_IS_ENABLED(OV_PP_CAT3(intel_cpu, _, region)) == 0) \
throw ov::Exception(std::string(OV_PP_TOSTRING(OV_PP_CAT3(intel_cpu, _, region))) + " is disabled!")
#else
# define CPU_LPT_SCOPE(region) OV_ITT_SCOPED_TASK(ov::intel_cpu::itt::domains::intel_cpu, OV_PP_TOSTRING(region))
# define CPU_GRAPH_OPTIMIZER_SCOPE(region)
#endif