diff options
author | Tracy Narine <tracy.narine@arm.com> | 2023-09-20 14:19:07 +0100 |
---|---|---|
committer | Tracy Narine <tracy.narine@arm.com> | 2023-09-28 14:25:16 +0100 |
commit | 6440ce89abb06e090d2b3cf91bafc14277072475 (patch) | |
tree | c55682891a0f01f3edbf5dad58720ded7af3fc64 /src/backends/aclCommon | |
parent | 9a418d850333119e219fb05addc57b56cdc60a7e (diff) | |
download | armnn-6440ce89abb06e090d2b3cf91bafc14277072475.tar.gz |
IVGCVSW-7504 Create a backend specific optimization to fuse ADD+MUL+Add+(Activation) in CpuAcc
* Adding CpuAcc backend optimization to fuse add+mul+add into one layer
* Tests added/enhanced
* Also added optional extended parameter to Graph::Print()
and throw macros that could be used in place of assert
Signed-off-by: Tracy Narine <tracy.narine@arm.com>
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I5f8d094b969a130d8c2c7b4da07426313a9fea76
Diffstat (limited to 'src/backends/aclCommon')
-rw-r--r-- | src/backends/aclCommon/ArmComputeSubgraphUtils.hpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp b/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp index 90c0fd5890..a44acb0f54 100644 --- a/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp +++ b/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp @@ -356,4 +356,25 @@ void ReplaceLayers(OptimizationViews& optimizationViews, optimizationViews.AddSubstitution({substitutionSubgraph, replacementSubgraph}); } +// +// Substitute a multi-layer subgraph with one new layer +// +template<typename LayerType> +void ReplaceMultipleLayers(OptimizationViews& optimizationViews, + std::vector<IConnectableLayer*>& originalLayers, + LayerType* baseLayer, + const std::vector<SlotList> inputLayersSlotLists, + const std::vector<SlotList> outputLayersSlotLists) +{ + std::list<IConnectableLayer*> originalLayerList(originalLayers.begin(), originalLayers.end()); + + SubgraphView substitutionSubgraph( + std::move(originalLayerList), + CreateIInputsFromSlotLists<armnn::IConnectableLayer>(originalLayers, inputLayersSlotLists), + CreateIOutputsFromSlotLists<armnn::IConnectableLayer>(originalLayers, outputLayersSlotLists)); + SubgraphView replacementSubgraph(baseLayer); + + optimizationViews.AddSubstitution({substitutionSubgraph, replacementSubgraph}); +} + } // namespace armnn |