aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2023-07-18 12:03:41 +0100
committermike.kelly <mike.kelly@arm.com>2023-07-21 16:01:50 +0000
commitb6de7a1444c09c0eb44c84a923c45c041b1f6092 (patch)
treec1d9e9241854e7d9bbb09da4f4a6f4652ff5c66c
parentc32adef195b523854144737ca05180235f5ca824 (diff)
downloadarmnn-b6de7a1444c09c0eb44c84a923c45c041b1f6092.tar.gz
IVGCVSW-7830 Clean up
* Follow up review to clean up whitespace and copyright errors mentioned in https://review.mlplatform.org/c/ml/armnn/+/9885 * Added BinaryElementwiseOperation to .dot files * Refactored ConnectedToSplitterWithMoreThan4Dims function to more generally useful ConnectedToLayerType function Signed-off-by: Mike Kelly <mike.kelly@arm.com> Change-Id: I0e3d0895888f3a3f0a9758ce30bc031aba50812b
-rw-r--r--src/armnn/Network.cpp2
-rw-r--r--src/armnn/SerializeLayerParameters.cpp6
-rw-r--r--src/armnn/SerializeLayerParameters.hpp5
-rw-r--r--src/backends/backendsCommon/OptimizationViews.cpp2
-rw-r--r--src/backends/backendsCommon/SubgraphUtils.hpp15
-rw-r--r--src/backends/backendsCommon/test/OptimizedNetworkTests.cpp4
-rw-r--r--src/backends/cl/backend.mk2
-rw-r--r--src/backends/neon/CMakeLists.txt2
-rw-r--r--src/backends/neon/NeonBackend.cpp2
-rw-r--r--src/backends/neon/NeonTensorHandle.cpp6
-rw-r--r--src/backends/neon/backend.mk2
-rw-r--r--src/backends/neon/workloads/CMakeLists.txt2
12 files changed, 32 insertions, 18 deletions
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 010fa0076b..27e91ae39c 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -1322,7 +1322,7 @@ OptimizationResult ApplyBackendOptimizations(OptimizedNetworkImpl* optNetObjPtr,
parentOut->Disconnect(inputSlot);
for (unsigned int out = deletedLayer->GetOutputSlot(in -1).GetNumConnections(); out > 0; --out)
{
- InputSlot *childIn = deletedLayer->GetOutputSlot(in - 1).GetConnection(out -1);
+ InputSlot* childIn = deletedLayer->GetOutputSlot(in - 1).GetConnection(out -1);
deletedLayer->GetOutputSlot(in - 1).Disconnect(*childIn);
parentOut->Connect(*childIn);
}
diff --git a/src/armnn/SerializeLayerParameters.cpp b/src/armnn/SerializeLayerParameters.cpp
index c318d5273f..67520a72d6 100644
--- a/src/armnn/SerializeLayerParameters.cpp
+++ b/src/armnn/SerializeLayerParameters.cpp
@@ -187,6 +187,12 @@ void StringifyLayerParameters<DepthwiseConvolution2dDescriptor>::Serialize(
fn("DataLayout", GetDataLayoutName(desc.m_DataLayout));
}
+void StringifyLayerParameters<ElementwiseBinaryDescriptor>::Serialize(ParameterStringifyFunction& fn,
+ const ElementwiseBinaryDescriptor& desc)
+{
+ fn("BinaryOperation", GetBinaryOperationAsCString(desc.m_Operation));
+}
+
void StringifyLayerParameters<ElementwiseUnaryDescriptor>::Serialize(ParameterStringifyFunction& fn,
const ElementwiseUnaryDescriptor& desc)
{
diff --git a/src/armnn/SerializeLayerParameters.hpp b/src/armnn/SerializeLayerParameters.hpp
index b786c53882..b90f9d85e8 100644
--- a/src/armnn/SerializeLayerParameters.hpp
+++ b/src/armnn/SerializeLayerParameters.hpp
@@ -75,6 +75,11 @@ template <> struct StringifyLayerParameters<DepthwiseConvolution2dDescriptor>
static void Serialize(ParameterStringifyFunction& fn, const DepthwiseConvolution2dDescriptor& desc);
};
+template <> struct StringifyLayerParameters<ElementwiseBinaryDescriptor>
+{
+ static void Serialize(ParameterStringifyFunction& fn, const ElementwiseBinaryDescriptor& desc);
+};
+
template <> struct StringifyLayerParameters<ElementwiseUnaryDescriptor>
{
static void Serialize(ParameterStringifyFunction& fn, const ElementwiseUnaryDescriptor& desc);
diff --git a/src/backends/backendsCommon/OptimizationViews.cpp b/src/backends/backendsCommon/OptimizationViews.cpp
index a358f88520..c9a8c7dde5 100644
--- a/src/backends/backendsCommon/OptimizationViews.cpp
+++ b/src/backends/backendsCommon/OptimizationViews.cpp
@@ -64,7 +64,7 @@ bool OptimizationViews::Validate(const armnn::SubgraphView& originalSubgraph) co
for (auto& substitution : m_SuccesfulOptimizations)
{
bool validSubstitution = true;
- const SubgraphView &replacement = substitution.m_ReplacementSubgraph;
+ const SubgraphView& replacement = substitution.m_ReplacementSubgraph;
const SubgraphView& old = substitution.m_SubstitutableSubgraph;
validSubstitution &= replacement.GetIInputSlots().size() == old.GetIInputSlots().size();
validSubstitution &= replacement.GetIOutputSlots().size() == old.GetIOutputSlots().size();
diff --git a/src/backends/backendsCommon/SubgraphUtils.hpp b/src/backends/backendsCommon/SubgraphUtils.hpp
index 823da76f29..9f2cdba6ef 100644
--- a/src/backends/backendsCommon/SubgraphUtils.hpp
+++ b/src/backends/backendsCommon/SubgraphUtils.hpp
@@ -33,7 +33,7 @@ public:
{
case armnn::LayerType::BatchMatMul:
{
- auto desc = static_cast<const armnn::BatchMatMulDescriptor &>(descriptor);
+ auto desc = static_cast<const armnn::BatchMatMulDescriptor&>(descriptor);
m_Result = desc.m_DataLayoutX == DataLayout::NCHW || desc.m_DataLayoutY == DataLayout::NCHW;
break;
}
@@ -219,12 +219,14 @@ inline bool ConnectedToLayerWithNCHW(Layer* baseLayer)
return false;
}
-/// Checks if the Layer is connected to a Splitter Layer through a Tensor that has more than 4 dimensions.
-inline bool ConnectedToSplitterWithMoreThan4Dims(Layer* baseLayer)
+/// Checks the Layer's Connections to see if it's connected to a Layer with the provided layerType. If dimSize is
+/// provided will also check if the connecting Tensor has more than that number of dimensions
+inline bool ConnectedToLayerType(Layer* baseLayer, LayerType layerType, unsigned int dimSize = 0)
{
Layer& parentLayer = baseLayer->GetInputSlot(0).GetConnectedOutputSlot()->GetOwningLayer();
- TensorInfo parentTensorInfo = baseLayer->GetInputSlot(0).GetConnectedOutputSlot()->GetTensorInfo();
- if (parentTensorInfo.GetNumDimensions() > 4 && parentLayer.GetType() == LayerType::Splitter)
+ TensorInfo parentTensorInfo = baseLayer->GetInputSlot(0).GetTensorInfo();
+
+ if (parentTensorInfo.GetNumDimensions() > dimSize && parentLayer.GetType() == layerType)
{
return true;
}
@@ -232,7 +234,8 @@ inline bool ConnectedToSplitterWithMoreThan4Dims(Layer* baseLayer)
{
Layer& nextLayer = baseLayer->GetOutputSlot(0).GetConnection(i)->GetOwningLayer();
TensorInfo nextTensorInfo = baseLayer->GetOutputSlot(0).GetConnection(i)->GetTensorInfo();
- if (nextTensorInfo.GetNumDimensions() > 4 && nextLayer.GetType() == LayerType::Splitter)
+
+ if (nextTensorInfo.GetNumDimensions() > dimSize && nextLayer.GetType() == layerType)
{
return true;
}
diff --git a/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
index ce1eea4194..d8e8f60cd8 100644
--- a/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
+++ b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
@@ -54,8 +54,8 @@ TEST_CASE("SerializeToDot")
" edge [fontsize=8 fontcolor=\"blue\" fontname=\"arial-bold\"];\n"
" " << inputId << " [label=\"{Input|Guid : " << inputId << "\\lLayerType : Input\\l"
"BackendID : CpuRef\\l}\"];\n"
- " " << addId << " [label=\"{ElementwiseBinary|Guid : " << addId << "\\lLayerType : ElementwiseBinary\\l"
- "BackendID : CpuRef\\l}\"];\n"
+ " " << addId << " [label=\"{ElementwiseBinary|BinaryOperation : Add\\lGuid : " << addId <<
+ "\\lLayerType : ElementwiseBinary\\lBackendID : CpuRef\\l}\"];\n"
" " << outputId << " [label=\"{Output|Guid : " << outputId << "\\lLayerType : Output\\l"
"BackendID : CpuRef\\l}\"];\n"
" " << inputId << " -> " << addId << " [label=< [4] >];\n"
diff --git a/src/backends/cl/backend.mk b/src/backends/cl/backend.mk
index f4b9fac740..5ceab700e4 100644
--- a/src/backends/cl/backend.mk
+++ b/src/backends/cl/backend.mk
@@ -1,5 +1,5 @@
#
-# Copyright © 2017,2023 ARM Ltd and Contributors. All rights reserved.
+# Copyright © 2017-2023 ARM Ltd and Contributors. All rights reserved.
# SPDX-License-Identifier: MIT
#
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index 5934221ec1..1c077731c4 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright © 2017 Arm Ltd. All rights reserved.
+# Copyright © 2017-2020,2022-2023 Arm Ltd. All rights reserved.
# SPDX-License-Identifier: MIT
#
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 60e25672ae..5fd1202659 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -518,7 +518,7 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
}
// Cannot remove a Reshape if it's connected to a SplitterLayer through a Tensor that has more than
// 4 dimensions
- if (ConnectedToSplitterWithMoreThan4Dims(baseLayer))
+ if (ConnectedToLayerType(baseLayer, LayerType::Splitter, 4))
{
continue;
}
diff --git a/src/backends/neon/NeonTensorHandle.cpp b/src/backends/neon/NeonTensorHandle.cpp
index 819805aa59..b1ab946324 100644
--- a/src/backends/neon/NeonTensorHandle.cpp
+++ b/src/backends/neon/NeonTensorHandle.cpp
@@ -29,17 +29,17 @@ NeonTensorDecorator::NeonTensorDecorator(arm_compute::ITensor *parent, const Ten
m_Original = parent;
}
-arm_compute::ITensorInfo *NeonTensorDecorator::info() const
+arm_compute::ITensorInfo* NeonTensorDecorator::info() const
{
return &m_TensorInfo;
}
-arm_compute::ITensorInfo *NeonTensorDecorator::info()
+arm_compute::ITensorInfo* NeonTensorDecorator::info()
{
return &m_TensorInfo;
}
-uint8_t *NeonTensorDecorator::buffer() const
+uint8_t* NeonTensorDecorator::buffer() const
{
return m_Original->buffer();
}
diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk
index 4150845f58..0e99c683cf 100644
--- a/src/backends/neon/backend.mk
+++ b/src/backends/neon/backend.mk
@@ -1,5 +1,5 @@
#
-# Copyright © 2017,2023 ARM Ltd and Contributors. All rights reserved.
+# Copyright © 2017-2023 ARM Ltd and Contributors. All rights reserved.
# SPDX-License-Identifier: MIT
#
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt
index f3f12842c1..53f2be750a 100644
--- a/src/backends/neon/workloads/CMakeLists.txt
+++ b/src/backends/neon/workloads/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved.
+# Copyright © 2017-2020,2022-2023 Arm Ltd and Contributors. All rights reserved.
# SPDX-License-Identifier: MIT
#