From 087e40670cdd6b435a69d2c2ab87d5c75cc31c58 Mon Sep 17 00:00:00 2001 From: Johan Gunnarsson Date: Wed, 16 Apr 2025 14:53:52 +0200 Subject: [PATCH] MLBEDSW-10685: Don't remove reshapes when connected to CPU ops Don't remove reshapes when they are connected to CPU op. Instead convert it to memory copy to preserve the tensor shapes. Later on, such memory copy ops may be optimized away. Signed-off-by: Johan Gunnarsson Change-Id: I26419f5a95c187dc09b046523004fcdc1d5495a0 --- ethosu/regor/compiler/tflite_graph_optimiser.cpp | 2 +- ethosu/regor/compiler/tflite_graph_optimiser.hpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ethosu/regor/compiler/tflite_graph_optimiser.cpp b/ethosu/regor/compiler/tflite_graph_optimiser.cpp index eec46ff1..8629741c 100644 --- a/ethosu/regor/compiler/tflite_graph_optimiser.cpp +++ b/ethosu/regor/compiler/tflite_graph_optimiser.cpp @@ -825,7 +825,7 @@ Operation *TFLiteGraphOptimiser::RemoveReshape(Graph *const graph, Operation *co std::find_if(ifm->Writers().begin(), ifm->Writers().end(), isPassthroughOp) != ifm->Writers().end(); // Inserts a copy op if needed before removing reshapes. - if ( ((isIfmSgIfm || isIfmSgOfm || isIfmConst) && (isOfmSgOfm)) || (isIfmCpuOfm && isOfmCpuIfm) ) + if ( ((isIfmSgIfm || isIfmSgOfm || isIfmConst || isIfmCpuOfm) && (isOfmSgOfm || isOfmCpuIfm)) ) { auto copyOp = InsertCopyOpAfterTensor(ifmConn->tensor, ifmConn->quantization); copyOp->Output(TensorUsage::OFM)->Set(RoundMode::NATURAL); diff --git a/ethosu/regor/compiler/tflite_graph_optimiser.hpp b/ethosu/regor/compiler/tflite_graph_optimiser.hpp index 77b3ef7e..c5b8b473 100644 --- a/ethosu/regor/compiler/tflite_graph_optimiser.hpp +++ b/ethosu/regor/compiler/tflite_graph_optimiser.hpp @@ -200,8 +200,6 @@ public: { {}, { - // prerequisite to pattern-matching - &TFLiteGraphOptimiser::RemoveReshape, // pattern-matching functions // (must run before supported-operator checks) // Every pattern-matching function is responsible of calling @@ -239,6 +237,12 @@ public: &TFLiteGraphOptimiser::RewriteFullyConnectDynamic } }, + { + {}, + { + &TFLiteGraphOptimiser::RemoveReshape, + } + }, { {}, { -- GitLab