From a9ac6ba643e8dc4fee88bd0e7e186f0918080c4b Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Fri, 30 Jun 2023 15:18:26 +0100 Subject: IVGCVSW-7828 Add an Optional TensorInfo to InputSlot * Updated calls to use the new function From: GetInputSlot(n).GetConnection()->GetTensorInfo(); To: GetInputSlot(n).GetTensorInfo(); * Added UnitTests Signed-off-by: Mike Kelly Change-Id: I43184cc05e4472011b9347aaa820eb8deb1cd4a0 --- Android.mk | 1 + CMakeLists.txt | 1 + src/armnn/Graph.cpp | 5 + src/armnn/Layer.cpp | 31 +++- src/armnn/Layer.hpp | 15 +- src/armnn/LoadedNetwork.cpp | 4 +- src/armnn/layers/AbsLayer.cpp | 4 +- src/armnn/layers/ActivationLayer.cpp | 4 +- src/armnn/layers/ArgMinMaxLayer.cpp | 4 +- src/armnn/layers/BatchMatMulLayer.cpp | 6 +- src/armnn/layers/BatchNormalizationLayer.cpp | 4 +- src/armnn/layers/BatchToSpaceNdLayer.cpp | 4 +- src/armnn/layers/CastLayer.cpp | 4 +- src/armnn/layers/ChannelShuffleLayer.cpp | 4 +- src/armnn/layers/ComparisonLayer.cpp | 4 +- src/armnn/layers/ConcatLayer.cpp | 11 +- src/armnn/layers/ConstantLayer.cpp | 2 +- src/armnn/layers/ConvertFp16ToFp32Layer.cpp | 4 +- src/armnn/layers/ConvertFp32ToFp16Layer.cpp | 4 +- src/armnn/layers/Convolution2dLayer.cpp | 10 +- src/armnn/layers/Convolution3dLayer.cpp | 10 +- src/armnn/layers/DebugLayer.cpp | 4 +- src/armnn/layers/DepthToSpaceLayer.cpp | 4 +- src/armnn/layers/DepthwiseConvolution2dLayer.cpp | 10 +- src/armnn/layers/DequantizeLayer.cpp | 4 +- src/armnn/layers/DetectionPostProcessLayer.cpp | 4 +- src/armnn/layers/ElementwiseBaseLayer.cpp | 4 +- src/armnn/layers/ElementwiseBinaryLayer.cpp | 4 +- src/armnn/layers/ElementwiseUnaryLayer.cpp | 4 +- src/armnn/layers/FakeQuantizationLayer.cpp | 4 +- src/armnn/layers/FillLayer.cpp | 4 +- src/armnn/layers/FloorLayer.cpp | 4 +- src/armnn/layers/FullyConnectedLayer.cpp | 6 +- src/armnn/layers/GatherLayer.cpp | 6 +- src/armnn/layers/GatherNdLayer.cpp | 6 +- src/armnn/layers/InstanceNormalizationLayer.cpp | 4 +- src/armnn/layers/L2NormalizationLayer.cpp | 4 +- src/armnn/layers/LayerWithParameters.hpp | 2 +- src/armnn/layers/LogSoftmaxLayer.cpp | 4 +- src/armnn/layers/LogicalBinaryLayer.cpp | 6 +- src/armnn/layers/LstmLayer.cpp | 8 +- src/armnn/layers/MeanLayer.cpp | 2 +- src/armnn/layers/MemCopyLayer.cpp | 4 +- src/armnn/layers/MemImportLayer.cpp | 4 +- src/armnn/layers/MergeLayer.cpp | 6 +- src/armnn/layers/NormalizationLayer.cpp | 4 +- src/armnn/layers/PadLayer.cpp | 4 +- src/armnn/layers/PermuteLayer.cpp | 4 +- src/armnn/layers/Pooling2dLayer.cpp | 4 +- src/armnn/layers/Pooling3dLayer.cpp | 4 +- src/armnn/layers/PreluLayer.cpp | 6 +- src/armnn/layers/QLstmLayer.cpp | 8 +- src/armnn/layers/QuantizeLayer.cpp | 4 +- src/armnn/layers/QuantizedLstmLayer.cpp | 8 +- src/armnn/layers/ReduceLayer.cpp | 2 +- src/armnn/layers/ReshapeLayer.cpp | 2 +- src/armnn/layers/ResizeLayer.cpp | 4 +- src/armnn/layers/RsqrtLayer.cpp | 4 +- src/armnn/layers/ShapeLayer.cpp | 4 +- src/armnn/layers/SliceLayer.cpp | 4 +- src/armnn/layers/SoftmaxLayer.cpp | 4 +- src/armnn/layers/SpaceToBatchNdLayer.cpp | 4 +- src/armnn/layers/SpaceToDepthLayer.cpp | 4 +- src/armnn/layers/SplitterLayer.cpp | 6 +- src/armnn/layers/StackLayer.cpp | 4 +- src/armnn/layers/StridedSliceLayer.cpp | 4 +- src/armnn/layers/SwitchLayer.cpp | 6 +- src/armnn/layers/TransposeConvolution2dLayer.cpp | 4 +- src/armnn/layers/TransposeLayer.cpp | 4 +- .../layers/UnidirectionalSequenceLstmLayer.cpp | 8 +- .../PermuteAndBatchToSpaceAsDepthToSpace.hpp | 4 +- src/armnn/test/LayerTests.cpp | 50 ++++++ src/backends/aclCommon/ArmComputeSubgraphUtils.hpp | 2 +- src/backends/backendsCommon/WorkloadFactory.cpp | 194 ++++++++++----------- src/backends/tosaCommon/TosaMappings.cpp | 2 +- 75 files changed, 357 insertions(+), 257 deletions(-) create mode 100644 src/armnn/test/LayerTests.cpp diff --git a/Android.mk b/Android.mk index 884624ee63..dd8f262c1e 100644 --- a/Android.mk +++ b/Android.mk @@ -436,6 +436,7 @@ LOCAL_SRC_FILES := \ src/armnn/test/GraphTests.cpp \ src/armnn/test/InferOutputTests.cpp \ src/armnn/test/InstrumentTests.cpp \ + src/armnn/test/LayerTests.cpp \ src/armnnUtils/ModelAccuracyChecker.cpp \ src/armnn/test/ModelAccuracyCheckerTest.cpp \ src/armnn/test/NetworkTests.cpp \ diff --git a/CMakeLists.txt b/CMakeLists.txt index a4199fe2d4..60fbaaa685 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -577,6 +577,7 @@ if(BUILD_UNIT_TESTS) src/armnn/test/FlowControl.cpp src/armnn/test/GraphTests.cpp src/armnn/test/InstrumentTests.cpp + src/armnn/test/LayerTests.cpp src/armnn/test/InferOutputTests.cpp src/armnn/test/InferOutputTests.hpp src/armnn/test/ModelAccuracyCheckerTest.cpp diff --git a/src/armnn/Graph.cpp b/src/armnn/Graph.cpp index 6943076ada..fee1da4343 100644 --- a/src/armnn/Graph.cpp +++ b/src/armnn/Graph.cpp @@ -52,6 +52,11 @@ Graph::Graph(const Graph& other) Layer* const thisTgtLayer = otherToClonedMap[&otherTgtLayer]; InputSlot& inputSlot = thisTgtLayer->GetInputSlot(otherInputSlot->GetSlotIndex()); + + if (otherInputSlot->IsTensorInfoOverridden()) + { + inputSlot.SetTensorInfo(otherInputSlot->GetTensorInfo()); + } outputSlot->Connect(inputSlot); } outputSlot->SetTensorInfo(otherOutputSlot.GetTensorInfo()); diff --git a/src/armnn/Layer.cpp b/src/armnn/Layer.cpp index 3ccce40a19..8d4811ae89 100644 --- a/src/armnn/Layer.cpp +++ b/src/armnn/Layer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "Layer.hpp" @@ -314,7 +314,7 @@ DataType Layer::GetDataType() const { if (GetNumInputSlots() > 0) // Ignore the input layer. { - return GetInputSlot(0).GetConnection()->GetTensorInfo().GetDataType(); + return GetInputSlot(0).GetTensorInfo().GetDataType(); } return GetOutputSlot(0).GetTensorInfo().GetDataType(); } @@ -571,4 +571,31 @@ IConnectableLayer& InputSlot::GetOwningIConnectableLayer() return m_OwningLayer; } +void InputSlot::SetTensorInfo(const TensorInfo tensorInfo) +{ + m_OverriddenTensorInfo = Optional(tensorInfo); +} + +const TensorInfo& InputSlot::GetTensorInfo() const +{ + if (m_OverriddenTensorInfo.has_value()) + { + return m_OverriddenTensorInfo.value(); + } + else + { + return GetConnection()->GetTensorInfo(); + } +} + +bool InputSlot::IsTensorInfoSet() const +{ + return m_OverriddenTensorInfo.has_value() || (GetConnection() && GetConnection()->IsTensorInfoSet()); +} + +bool InputSlot::IsTensorInfoOverridden() const +{ + return m_OverriddenTensorInfo.has_value(); +} + } // namespace armnn diff --git a/src/armnn/Layer.hpp b/src/armnn/Layer.hpp index ad6c9b298e..5e097f0fad 100644 --- a/src/armnn/Layer.hpp +++ b/src/armnn/Layer.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -78,9 +78,22 @@ public: const IOutputSlot* GetConnection() const override; IOutputSlot* GetConnection() override; + /// Sets the TensorInfo for this InputSlot. This can be used to override the TensorInfo and if set will be returned + /// instead of the TensorInfo for the Connected OutputSlot. + void SetTensorInfo(const TensorInfo tensorInfo); + /// Gets the TensorInfo for this InputSlot. If the InputSlot's TensorInfo has not been set then this will get the + /// TensorInfo from the Connected TensorInfo. + const TensorInfo& GetTensorInfo() const; + /// Returns true if this InputSlot either has an overridden TensorInfo for this InputSlot that was set through a + /// call to SetTensorInfo() or is Connected to an OutputSlot that has its TensorInfo set. + bool IsTensorInfoSet() const; + /// Returns true if this InputSlot has an overridden TensorInfo that was set through a call to SetTensorInfo(). + bool IsTensorInfoOverridden() const; + private: Layer& m_OwningLayer; OutputSlot* m_Connection; + Optional m_OverriddenTensorInfo; const unsigned int m_SlotIndex; }; diff --git a/src/armnn/LoadedNetwork.cpp b/src/armnn/LoadedNetwork.cpp index b42874f29d..3f4aa34a5b 100644 --- a/src/armnn/LoadedNetwork.cpp +++ b/src/armnn/LoadedNetwork.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -716,7 +716,7 @@ TensorInfo LoadedNetwork::GetOutputTensorInfo(LayerBindingId layerId) const ARMNN_ASSERT_MSG(outputLayer->GetInputSlot(0).GetConnection(), "Input slot on Output layer must be connected"); if (outputLayer->GetBindingId() == layerId) { - return outputLayer->GetInputSlot(0).GetConnection()->GetTensorInfo(); + return outputLayer->GetInputSlot(0).GetTensorInfo(); } } diff --git a/src/armnn/layers/AbsLayer.cpp b/src/armnn/layers/AbsLayer.cpp index 072d13ce93..6858b364a6 100644 --- a/src/armnn/layers/AbsLayer.cpp +++ b/src/armnn/layers/AbsLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -40,7 +40,7 @@ void AbsLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ActivationLayer.cpp b/src/armnn/layers/ActivationLayer.cpp index eea18d71e4..fe4aaa766f 100644 --- a/src/armnn/layers/ActivationLayer.cpp +++ b/src/armnn/layers/ActivationLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "ActivationLayer.hpp" @@ -38,7 +38,7 @@ void ActivationLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ArgMinMaxLayer.cpp b/src/armnn/layers/ArgMinMaxLayer.cpp index 57a6ff12d8..37986572a0 100644 --- a/src/armnn/layers/ArgMinMaxLayer.cpp +++ b/src/armnn/layers/ArgMinMaxLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -79,7 +79,7 @@ void ArgMinMaxLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/BatchMatMulLayer.cpp b/src/armnn/layers/BatchMatMulLayer.cpp index 0f86b9dc48..8b2629c4ea 100644 --- a/src/armnn/layers/BatchMatMulLayer.cpp +++ b/src/armnn/layers/BatchMatMulLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "BatchMatMulLayer.hpp" @@ -99,8 +99,8 @@ void BatchMatMulLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); auto inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/BatchNormalizationLayer.cpp b/src/armnn/layers/BatchNormalizationLayer.cpp index b5e9f2c413..17463f8d4f 100644 --- a/src/armnn/layers/BatchNormalizationLayer.cpp +++ b/src/armnn/layers/BatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "BatchNormalizationLayer.hpp" @@ -57,7 +57,7 @@ void BatchNormalizationLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/BatchToSpaceNdLayer.cpp b/src/armnn/layers/BatchToSpaceNdLayer.cpp index b760b5661c..63817dde16 100644 --- a/src/armnn/layers/BatchToSpaceNdLayer.cpp +++ b/src/armnn/layers/BatchToSpaceNdLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -43,7 +43,7 @@ void BatchToSpaceNdLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape()}); + auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/CastLayer.cpp b/src/armnn/layers/CastLayer.cpp index efa74c82c3..fc1ab81d4f 100644 --- a/src/armnn/layers/CastLayer.cpp +++ b/src/armnn/layers/CastLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "CastLayer.hpp" @@ -39,7 +39,7 @@ void CastLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ChannelShuffleLayer.cpp b/src/armnn/layers/ChannelShuffleLayer.cpp index 33ea70e94a..ce6c0bac11 100644 --- a/src/armnn/layers/ChannelShuffleLayer.cpp +++ b/src/armnn/layers/ChannelShuffleLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -40,7 +40,7 @@ void ChannelShuffleLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = Layer::InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = Layer::InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ComparisonLayer.cpp b/src/armnn/layers/ComparisonLayer.cpp index c097cddf4d..5d18a58f3c 100644 --- a/src/armnn/layers/ComparisonLayer.cpp +++ b/src/armnn/layers/ComparisonLayer.cpp @@ -79,8 +79,8 @@ void ComparisonLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ConcatLayer.cpp b/src/armnn/layers/ConcatLayer.cpp index 69660dd04f..7a1b689b2c 100644 --- a/src/armnn/layers/ConcatLayer.cpp +++ b/src/armnn/layers/ConcatLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "ConcatLayer.hpp" @@ -104,14 +104,13 @@ void ConcatLayer::CreateTensors(const TensorHandleFactoryRegistry& registry, } } } - // First go through all the input slots and verify that we can sub-tensor all the inputs. std::vector> subTensors(0); subTensors.reserve(numInputSlots); for (unsigned int i = 0; i < numInputSlots; ++i) { OutputSlot* slot = currentLayer->GetInputSlot(i).GetConnectedOutputSlot(); - const TensorInfo& info = slot->GetTensorInfo(); + const TensorInfo& info = currentLayer->GetInputSlot(i).GetTensorInfo(); auto CreateSubTensor = [&]() { @@ -121,13 +120,15 @@ void ConcatLayer::CreateTensors(const TensorHandleFactoryRegistry& registry, // 3) the input does not come from a Constant layer or input layer // 4) the input is only read by this concat layer // 5) if concat along x or y (2 innermost dimensions) and the previous layers do not require padding + // 6) the input does not have an Overridden TensorInfo if (slot && parentInfo.IsTypeSpaceMatch(info) && //(1) factoryId == slot->GetTensorHandleFactoryId() && //(2) slot->GetOwningLayer().GetType() != LayerType::Constant && //(3) slot->GetOwningLayer().GetType() != LayerType::Input && //(3) slot->GetNumConnections() == 1 && - canUseSubTensorOnXorY) //(5) + canUseSubTensorOnXorY && //(5) + !currentLayer->GetInputSlot(i).IsTensorInfoOverridden()) //(6) { ARMNN_NO_DEPRECATE_WARN_BEGIN return factory.CreateSubTensorHandle(*parentTensor, @@ -308,7 +309,7 @@ void ConcatLayer::ValidateTensorShapesFromInputs() std::vector inputShapes; for (unsigned int i = 0; i < GetNumInputSlots(); ++i) { - inputShapes.push_back(GetInputSlot(i).GetConnection()->GetTensorInfo().GetShape()); + inputShapes.push_back(GetInputSlot(i).GetTensorInfo().GetShape()); } auto inferredShapes = InferOutputShapes(inputShapes); diff --git a/src/armnn/layers/ConstantLayer.cpp b/src/armnn/layers/ConstantLayer.cpp index a17bb4fc93..a472c25790 100644 --- a/src/armnn/layers/ConstantLayer.cpp +++ b/src/armnn/layers/ConstantLayer.cpp @@ -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 // #include "ConstantLayer.hpp" diff --git a/src/armnn/layers/ConvertFp16ToFp32Layer.cpp b/src/armnn/layers/ConvertFp16ToFp32Layer.cpp index e3865a6dcb..9fefe2016a 100644 --- a/src/armnn/layers/ConvertFp16ToFp32Layer.cpp +++ b/src/armnn/layers/ConvertFp16ToFp32Layer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -40,7 +40,7 @@ void ConvertFp16ToFp32Layer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ConvertFp32ToFp16Layer.cpp b/src/armnn/layers/ConvertFp32ToFp16Layer.cpp index 36708c56e0..f1abba32c6 100644 --- a/src/armnn/layers/ConvertFp32ToFp16Layer.cpp +++ b/src/armnn/layers/ConvertFp32ToFp16Layer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "ConvertFp32ToFp16Layer.hpp" @@ -40,7 +40,7 @@ void ConvertFp32ToFp16Layer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/Convolution2dLayer.cpp b/src/armnn/layers/Convolution2dLayer.cpp index f6a5583aad..df971a517d 100644 --- a/src/armnn/layers/Convolution2dLayer.cpp +++ b/src/armnn/layers/Convolution2dLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -31,8 +31,8 @@ void Convolution2dLayer::SerializeLayerParameters(ParameterStringifyFunction& fn //using DescriptorType = Parameters; const std::vector& inputShapes = { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }; const TensorShape filterShape = inputShapes[1]; DataLayoutIndexed dataLayoutIndex(m_Param.m_DataLayout); @@ -111,8 +111,8 @@ void Convolution2dLayer::ValidateTensorShapesFromInputs() "Convolution2dLayer: Weights should be connected to input slot 1."); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/Convolution3dLayer.cpp b/src/armnn/layers/Convolution3dLayer.cpp index b01870af46..2d697beb1f 100644 --- a/src/armnn/layers/Convolution3dLayer.cpp +++ b/src/armnn/layers/Convolution3dLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -24,8 +24,8 @@ void Convolution3dLayer::SerializeLayerParameters(ParameterStringifyFunction& fn { const std::vector& inputShapes = { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape(), }; // Conv3d Filter Layout: [D,H,W,I,O] @@ -116,8 +116,8 @@ void Convolution3dLayer::ValidateTensorShapesFromInputs() "Convolution3dLayer: Weights should be connected to input slot 1."); auto inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/DebugLayer.cpp b/src/armnn/layers/DebugLayer.cpp index e1c8572c95..01c1c7be6b 100644 --- a/src/armnn/layers/DebugLayer.cpp +++ b/src/armnn/layers/DebugLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "DebugLayer.hpp" @@ -51,7 +51,7 @@ void DebugLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/DepthToSpaceLayer.cpp b/src/armnn/layers/DepthToSpaceLayer.cpp index 2414b00e2f..b94eccc1ee 100644 --- a/src/armnn/layers/DepthToSpaceLayer.cpp +++ b/src/armnn/layers/DepthToSpaceLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -68,7 +68,7 @@ void DepthToSpaceLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp index 1e5a998119..4f08b2324e 100644 --- a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp +++ b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -30,8 +30,8 @@ void DepthwiseConvolution2dLayer::SerializeLayerParameters(ParameterStringifyFun { const std::vector& inputShapes = { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }; const TensorShape filterShape = inputShapes[1]; unsigned int inputChannels = filterShape[1]; @@ -114,8 +114,8 @@ void DepthwiseConvolution2dLayer::ValidateTensorShapesFromInputs() "DepthwiseConvolution2dLayer: Weights data should not be null."); auto inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/DequantizeLayer.cpp b/src/armnn/layers/DequantizeLayer.cpp index 7bc03f4cde..b398cf6e0d 100644 --- a/src/armnn/layers/DequantizeLayer.cpp +++ b/src/armnn/layers/DequantizeLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "DequantizeLayer.hpp" @@ -39,7 +39,7 @@ void DequantizeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/DetectionPostProcessLayer.cpp b/src/armnn/layers/DetectionPostProcessLayer.cpp index 27e459b0ce..6bddf51551 100644 --- a/src/armnn/layers/DetectionPostProcessLayer.cpp +++ b/src/armnn/layers/DetectionPostProcessLayer.cpp @@ -50,8 +50,8 @@ void DetectionPostProcessLayer::ValidateTensorShapesFromInputs() ARMNN_ASSERT_MSG(GetNumOutputSlots() == 4, "DetectionPostProcessLayer: The layer should return 4 outputs."); std::vector inferredShapes = InferOutputShapes( - { GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() }); + { GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 4); ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified); diff --git a/src/armnn/layers/ElementwiseBaseLayer.cpp b/src/armnn/layers/ElementwiseBaseLayer.cpp index 87fddfea79..3cbddfa5db 100644 --- a/src/armnn/layers/ElementwiseBaseLayer.cpp +++ b/src/armnn/layers/ElementwiseBaseLayer.cpp @@ -66,8 +66,8 @@ void ElementwiseBaseLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ElementwiseBinaryLayer.cpp b/src/armnn/layers/ElementwiseBinaryLayer.cpp index ae1813f33a..67619fc463 100644 --- a/src/armnn/layers/ElementwiseBinaryLayer.cpp +++ b/src/armnn/layers/ElementwiseBinaryLayer.cpp @@ -74,8 +74,8 @@ void ElementwiseBinaryLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ElementwiseUnaryLayer.cpp b/src/armnn/layers/ElementwiseUnaryLayer.cpp index a6c1f16ed3..c648f9b863 100644 --- a/src/armnn/layers/ElementwiseUnaryLayer.cpp +++ b/src/armnn/layers/ElementwiseUnaryLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -49,7 +49,7 @@ void ElementwiseUnaryLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape()}); + GetInputSlot(0).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 1); ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, GetLayerTypeAsCString(GetType())); diff --git a/src/armnn/layers/FakeQuantizationLayer.cpp b/src/armnn/layers/FakeQuantizationLayer.cpp index 5c6ac18cf7..a612b5a4ec 100644 --- a/src/armnn/layers/FakeQuantizationLayer.cpp +++ b/src/armnn/layers/FakeQuantizationLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "FakeQuantizationLayer.hpp" @@ -39,7 +39,7 @@ void FakeQuantizationLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/FillLayer.cpp b/src/armnn/layers/FillLayer.cpp index 0822c3c83e..af01b99847 100644 --- a/src/armnn/layers/FillLayer.cpp +++ b/src/armnn/layers/FillLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "FillLayer.hpp" @@ -39,7 +39,7 @@ void FillLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/FloorLayer.cpp b/src/armnn/layers/FloorLayer.cpp index 471b575eb0..2db8d91b4b 100644 --- a/src/armnn/layers/FloorLayer.cpp +++ b/src/armnn/layers/FloorLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "FloorLayer.hpp" @@ -39,7 +39,7 @@ void FloorLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "FloorLayer"); diff --git a/src/armnn/layers/FullyConnectedLayer.cpp b/src/armnn/layers/FullyConnectedLayer.cpp index f86f58443f..87a8adacaa 100644 --- a/src/armnn/layers/FullyConnectedLayer.cpp +++ b/src/armnn/layers/FullyConnectedLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "FullyConnectedLayer.hpp" @@ -52,8 +52,8 @@ void FullyConnectedLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes( - {GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()}); + {GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 1); ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified); diff --git a/src/armnn/layers/GatherLayer.cpp b/src/armnn/layers/GatherLayer.cpp index 252dfd2f45..ae5ecd6cb6 100644 --- a/src/armnn/layers/GatherLayer.cpp +++ b/src/armnn/layers/GatherLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -80,8 +80,8 @@ void GatherLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes( - {GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()}); + {GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 1); ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified || inferredShapes[0].GetDimensionality() == Dimensionality::Scalar); diff --git a/src/armnn/layers/GatherNdLayer.cpp b/src/armnn/layers/GatherNdLayer.cpp index 036b3cfa86..0f06946634 100644 --- a/src/armnn/layers/GatherNdLayer.cpp +++ b/src/armnn/layers/GatherNdLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -84,8 +84,8 @@ void GatherNdLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes( - {GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()}); + {GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 1); ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified || inferredShapes[0].GetDimensionality() == Dimensionality::Scalar); diff --git a/src/armnn/layers/InstanceNormalizationLayer.cpp b/src/armnn/layers/InstanceNormalizationLayer.cpp index 10543c6aa1..db6cd206cc 100644 --- a/src/armnn/layers/InstanceNormalizationLayer.cpp +++ b/src/armnn/layers/InstanceNormalizationLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "InstanceNormalizationLayer.hpp" @@ -39,7 +39,7 @@ void InstanceNormalizationLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/L2NormalizationLayer.cpp b/src/armnn/layers/L2NormalizationLayer.cpp index 8ea242be61..2d268dddef 100644 --- a/src/armnn/layers/L2NormalizationLayer.cpp +++ b/src/armnn/layers/L2NormalizationLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "L2NormalizationLayer.hpp" @@ -39,7 +39,7 @@ void L2NormalizationLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/LayerWithParameters.hpp b/src/armnn/layers/LayerWithParameters.hpp index 0a1dbf363c..4e7cd45125 100644 --- a/src/armnn/layers/LayerWithParameters.hpp +++ b/src/armnn/layers/LayerWithParameters.hpp @@ -61,7 +61,7 @@ protected: Layer::ImmutableConstantTensors tensors; for (unsigned int i = 0; i < GetNumInputSlots(); ++i) { - if (GetInputSlot(i).GetConnection() && GetInputSlot(i).GetConnection()->GetTensorInfo().IsConstant()) + if (GetInputSlot(i).GetConnection() && GetInputSlot(i).GetTensorInfo().IsConstant()) { auto &inputLayer = GetInputSlot(i).GetConnectedOutputSlot()->GetOwningLayer(); if (inputLayer.GetType() == armnn::LayerType::Constant) diff --git a/src/armnn/layers/LogSoftmaxLayer.cpp b/src/armnn/layers/LogSoftmaxLayer.cpp index 0698b70638..872d42297f 100644 --- a/src/armnn/layers/LogSoftmaxLayer.cpp +++ b/src/armnn/layers/LogSoftmaxLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -39,7 +39,7 @@ void LogSoftmaxLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "LogSoftmaxLayer"); diff --git a/src/armnn/layers/LogicalBinaryLayer.cpp b/src/armnn/layers/LogicalBinaryLayer.cpp index 736a0c27ce..84a6e8e812 100644 --- a/src/armnn/layers/LogicalBinaryLayer.cpp +++ b/src/armnn/layers/LogicalBinaryLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -64,8 +64,8 @@ void LogicalBinaryLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/LstmLayer.cpp b/src/armnn/layers/LstmLayer.cpp index 2c9604396b..0e6f3d882b 100644 --- a/src/armnn/layers/LstmLayer.cpp +++ b/src/armnn/layers/LstmLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "LstmLayer.hpp" @@ -174,9 +174,9 @@ void LstmLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); auto inferredShapes = InferOutputShapes( { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape(), + GetInputSlot(2).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 4); diff --git a/src/armnn/layers/MeanLayer.cpp b/src/armnn/layers/MeanLayer.cpp index a6f721b076..bd49f509a0 100644 --- a/src/armnn/layers/MeanLayer.cpp +++ b/src/armnn/layers/MeanLayer.cpp @@ -50,7 +50,7 @@ void MeanLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes( - { GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + { GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified); diff --git a/src/armnn/layers/MemCopyLayer.cpp b/src/armnn/layers/MemCopyLayer.cpp index 0443c75675..6dd203448d 100644 --- a/src/armnn/layers/MemCopyLayer.cpp +++ b/src/armnn/layers/MemCopyLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "MemCopyLayer.hpp" @@ -42,7 +42,7 @@ void MemCopyLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/MemImportLayer.cpp b/src/armnn/layers/MemImportLayer.cpp index 98b012901f..a1c92f676e 100644 --- a/src/armnn/layers/MemImportLayer.cpp +++ b/src/armnn/layers/MemImportLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "MemImportLayer.hpp" @@ -42,7 +42,7 @@ void MemImportLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/MergeLayer.cpp b/src/armnn/layers/MergeLayer.cpp index 94a0c1033d..a3b098ae00 100644 --- a/src/armnn/layers/MergeLayer.cpp +++ b/src/armnn/layers/MergeLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "MergeLayer.hpp" @@ -36,8 +36,8 @@ void MergeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape(), }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/NormalizationLayer.cpp b/src/armnn/layers/NormalizationLayer.cpp index 372cd7637a..24b6788ee6 100644 --- a/src/armnn/layers/NormalizationLayer.cpp +++ b/src/armnn/layers/NormalizationLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "NormalizationLayer.hpp" @@ -39,7 +39,7 @@ void NormalizationLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/PadLayer.cpp b/src/armnn/layers/PadLayer.cpp index ce63d7be51..0024ba5541 100644 --- a/src/armnn/layers/PadLayer.cpp +++ b/src/armnn/layers/PadLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -66,7 +66,7 @@ void PadLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/PermuteLayer.cpp b/src/armnn/layers/PermuteLayer.cpp index 16dc4d6713..f8803a167e 100644 --- a/src/armnn/layers/PermuteLayer.cpp +++ b/src/armnn/layers/PermuteLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -50,7 +50,7 @@ void PermuteLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/Pooling2dLayer.cpp b/src/armnn/layers/Pooling2dLayer.cpp index 34deed2a30..e423b8bf38 100644 --- a/src/armnn/layers/Pooling2dLayer.cpp +++ b/src/armnn/layers/Pooling2dLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -110,7 +110,7 @@ void Pooling2dLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/Pooling3dLayer.cpp b/src/armnn/layers/Pooling3dLayer.cpp index fe92f62822..ec1ec80f0e 100644 --- a/src/armnn/layers/Pooling3dLayer.cpp +++ b/src/armnn/layers/Pooling3dLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -114,7 +114,7 @@ void Pooling3dLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/PreluLayer.cpp b/src/armnn/layers/PreluLayer.cpp index e6ab0d8b75..a302640434 100644 --- a/src/armnn/layers/PreluLayer.cpp +++ b/src/armnn/layers/PreluLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -107,8 +107,8 @@ void PreluLayer::ValidateTensorShapesFromInputs() std::vector inferredShapes = InferOutputShapes( { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/QLstmLayer.cpp b/src/armnn/layers/QLstmLayer.cpp index bfdbe16155..eeb01db51d 100644 --- a/src/armnn/layers/QLstmLayer.cpp +++ b/src/armnn/layers/QLstmLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "QLstmLayer.hpp" @@ -177,9 +177,9 @@ void QLstmLayer::ValidateTensorShapesFromInputs() auto inferredShapes = InferOutputShapes( { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), // input - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), // previousOutputIn - GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape() // previousCellStateIn + GetInputSlot(0).GetTensorInfo().GetShape(), // input + GetInputSlot(1).GetTensorInfo().GetShape(), // previousOutputIn + GetInputSlot(2).GetTensorInfo().GetShape() // previousCellStateIn }); ARMNN_ASSERT(inferredShapes.size() == 3); diff --git a/src/armnn/layers/QuantizeLayer.cpp b/src/armnn/layers/QuantizeLayer.cpp index 3ad286e64c..03fb208b3e 100644 --- a/src/armnn/layers/QuantizeLayer.cpp +++ b/src/armnn/layers/QuantizeLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -38,7 +38,7 @@ void QuantizeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "QuantizeLayer"); } diff --git a/src/armnn/layers/QuantizedLstmLayer.cpp b/src/armnn/layers/QuantizedLstmLayer.cpp index a213a1b5b0..c82e34f983 100644 --- a/src/armnn/layers/QuantizedLstmLayer.cpp +++ b/src/armnn/layers/QuantizedLstmLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "QuantizedLstmLayer.hpp" @@ -103,9 +103,9 @@ void QuantizedLstmLayer::ValidateTensorShapesFromInputs() auto inferredShapes = InferOutputShapes( { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), // input - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), // previousCellStateIn - GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape() // previousOutputIn + GetInputSlot(0).GetTensorInfo().GetShape(), // input + GetInputSlot(1).GetTensorInfo().GetShape(), // previousCellStateIn + GetInputSlot(2).GetTensorInfo().GetShape() // previousOutputIn }); ARMNN_ASSERT(inferredShapes.size() == 2); diff --git a/src/armnn/layers/ReduceLayer.cpp b/src/armnn/layers/ReduceLayer.cpp index ebee213659..21095dda74 100644 --- a/src/armnn/layers/ReduceLayer.cpp +++ b/src/armnn/layers/ReduceLayer.cpp @@ -49,7 +49,7 @@ void ReduceLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - const TensorInfo& input = GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = GetInputSlot(0).GetTensorInfo(); ARMNN_ASSERT_MSG(input.GetNumDimensions() > 0 && input.GetNumDimensions() <= 4, "ReduceLayer: Reduce supports up to 4D input."); diff --git a/src/armnn/layers/ReshapeLayer.cpp b/src/armnn/layers/ReshapeLayer.cpp index e68460bf32..b786f54fe3 100644 --- a/src/armnn/layers/ReshapeLayer.cpp +++ b/src/armnn/layers/ReshapeLayer.cpp @@ -46,7 +46,7 @@ void ReshapeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified); diff --git a/src/armnn/layers/ResizeLayer.cpp b/src/armnn/layers/ResizeLayer.cpp index 188d134880..734df0a9a2 100644 --- a/src/armnn/layers/ResizeLayer.cpp +++ b/src/armnn/layers/ResizeLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -68,7 +68,7 @@ void ResizeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/RsqrtLayer.cpp b/src/armnn/layers/RsqrtLayer.cpp index 0c2cc6373b..91f6d10a69 100644 --- a/src/armnn/layers/RsqrtLayer.cpp +++ b/src/armnn/layers/RsqrtLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -41,7 +41,7 @@ void RsqrtLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/ShapeLayer.cpp b/src/armnn/layers/ShapeLayer.cpp index dbc0d7a888..e7e343c707 100644 --- a/src/armnn/layers/ShapeLayer.cpp +++ b/src/armnn/layers/ShapeLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -42,7 +42,7 @@ void ShapeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShape = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShape = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShape.size() == 1); diff --git a/src/armnn/layers/SliceLayer.cpp b/src/armnn/layers/SliceLayer.cpp index 6362be3de2..a9327c6111 100644 --- a/src/armnn/layers/SliceLayer.cpp +++ b/src/armnn/layers/SliceLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -42,7 +42,7 @@ void SliceLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/SoftmaxLayer.cpp b/src/armnn/layers/SoftmaxLayer.cpp index b1cb191511..5f68278454 100644 --- a/src/armnn/layers/SoftmaxLayer.cpp +++ b/src/armnn/layers/SoftmaxLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "SoftmaxLayer.hpp" @@ -39,7 +39,7 @@ void SoftmaxLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/SpaceToBatchNdLayer.cpp b/src/armnn/layers/SpaceToBatchNdLayer.cpp index a758617e2e..277fc4479d 100644 --- a/src/armnn/layers/SpaceToBatchNdLayer.cpp +++ b/src/armnn/layers/SpaceToBatchNdLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -69,7 +69,7 @@ void SpaceToBatchNdLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/SpaceToDepthLayer.cpp b/src/armnn/layers/SpaceToDepthLayer.cpp index f2f0b768a7..c86758f67f 100644 --- a/src/armnn/layers/SpaceToDepthLayer.cpp +++ b/src/armnn/layers/SpaceToDepthLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -70,7 +70,7 @@ void SpaceToDepthLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/SplitterLayer.cpp b/src/armnn/layers/SplitterLayer.cpp index 0226a046be..86a42305ff 100644 --- a/src/armnn/layers/SplitterLayer.cpp +++ b/src/armnn/layers/SplitterLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "SplitterLayer.hpp" @@ -131,11 +131,13 @@ void SplitterLayer::CreateTensors(const TensorHandleFactoryRegistry& registry, // 2) the same TensorHandleFactory is used for input and split layer output // 3) the output does not go to a Constant layer or input layer // 4) if split along x or y (2 innermost dimensions) and the next layers do not require padding + // 5) none of the outputs have an Overridden TensorInfo if (parentInfo.IsTypeSpaceMatch(info) && //(1) factoryId == slot->GetTensorHandleFactoryId() && //(2) GetOutputSlot(i).GetConnection(0)->GetOwningLayer().GetType() != LayerType::Constant && //(3) GetOutputSlot(i).GetConnection(0)->GetOwningLayer().GetType() != LayerType::Input && //(3) - canUseSubTensorOnXorY) //(4) + canUseSubTensorOnXorY && //(4) + !GetOutputSlot(i).GetConnection(0)->IsTensorInfoOverridden()) //(5) { ARMNN_NO_DEPRECATE_WARN_BEGIN return factory.CreateSubTensorHandle(*inputData, diff --git a/src/armnn/layers/StackLayer.cpp b/src/armnn/layers/StackLayer.cpp index 3ebacaf3b5..3c5a216eb3 100644 --- a/src/armnn/layers/StackLayer.cpp +++ b/src/armnn/layers/StackLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "StackLayer.hpp" @@ -78,7 +78,7 @@ void StackLayer::ValidateTensorShapesFromInputs() std::vector inputShapes; for (unsigned int i = 0; i < GetNumInputSlots(); ++i) { - TensorShape inputShape = GetInputSlot(i).GetConnection()->GetTensorInfo().GetShape(); + TensorShape inputShape = GetInputSlot(i).GetTensorInfo().GetShape(); if (inputShape != m_Param.m_InputShape) { throw LayerValidationException("StackLayer: TensorShape set on InputSlot[" + diff --git a/src/armnn/layers/StridedSliceLayer.cpp b/src/armnn/layers/StridedSliceLayer.cpp index a179531306..16aeab5f5a 100644 --- a/src/armnn/layers/StridedSliceLayer.cpp +++ b/src/armnn/layers/StridedSliceLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "StridedSliceLayer.hpp" @@ -104,7 +104,7 @@ void StridedSliceLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape()}); + auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/SwitchLayer.cpp b/src/armnn/layers/SwitchLayer.cpp index c2022fdcbb..031dcec29a 100644 --- a/src/armnn/layers/SwitchLayer.cpp +++ b/src/armnn/layers/SwitchLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "SwitchLayer.hpp" @@ -41,8 +41,8 @@ void SwitchLayer::ValidateTensorShapesFromInputs() // Assuming first input is the Input and second input is the Constant std::vector inferredShapes = InferOutputShapes({ - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()}); + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape()}); ARMNN_ASSERT(inferredShapes.size() == 2); diff --git a/src/armnn/layers/TransposeConvolution2dLayer.cpp b/src/armnn/layers/TransposeConvolution2dLayer.cpp index 534d6b431e..3a7e8b889e 100644 --- a/src/armnn/layers/TransposeConvolution2dLayer.cpp +++ b/src/armnn/layers/TransposeConvolution2dLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -100,7 +100,7 @@ void TransposeConvolution2dLayer::ValidateTensorShapesFromInputs() std::vector expectedOutputShape; std::vector outputShapeGivenAsInput; - expectedOutputShape = InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), + expectedOutputShape = InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape(), m_Weight->GetTensorInfo().GetShape() }); ARMNN_ASSERT(expectedOutputShape.size() == 1); diff --git a/src/armnn/layers/TransposeLayer.cpp b/src/armnn/layers/TransposeLayer.cpp index bc9e0acf7c..58e570ab38 100644 --- a/src/armnn/layers/TransposeLayer.cpp +++ b/src/armnn/layers/TransposeLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -50,7 +50,7 @@ void TransposeLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); - auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp b/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp index 7ae08834e6..75f027e32d 100644 --- a/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp +++ b/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include "UnidirectionalSequenceLstmLayer.hpp" @@ -176,9 +176,9 @@ void UnidirectionalSequenceLstmLayer::ValidateTensorShapesFromInputs() VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); auto inferredShapes = InferOutputShapes( { - GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), - GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape() + GetInputSlot(0).GetTensorInfo().GetShape(), + GetInputSlot(1).GetTensorInfo().GetShape(), + GetInputSlot(2).GetTensorInfo().GetShape() }); ARMNN_ASSERT(inferredShapes.size() == 1); diff --git a/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp b/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp index 61a6cabcec..1d72a7ab63 100644 --- a/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp +++ b/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019-2020,2023 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -23,7 +23,7 @@ public: // Validate base layer (the Permute) is compatible Layer& base = connection.GetConnectedOutputSlot()->GetOwningLayer(); ARMNN_ASSERT(base.GetType() == LayerType::Permute || base.GetType() == LayerType::Transpose); - const TensorInfo& inputInfo = base.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& inputInfo = base.GetInputSlot(0).GetTensorInfo(); const TensorInfo& intermediateInfo = base.GetOutputSlot(0).GetTensorInfo(); if (intermediateInfo.GetNumDimensions() != 4) { diff --git a/src/armnn/test/LayerTests.cpp b/src/armnn/test/LayerTests.cpp new file mode 100644 index 0000000000..3e9184e3be --- /dev/null +++ b/src/armnn/test/LayerTests.cpp @@ -0,0 +1,50 @@ +// +// Copyright © 2023 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include +#include +#include + +namespace +{ + +TEST_SUITE("Layer") +{ + +TEST_CASE("InputSlotGetTensorInfo") +{ + armnn::NetworkImpl net; + armnn::IConnectableLayer* add = net.AddElementwiseBinaryLayer(armnn::BinaryOperation::Add); + armnn::IConnectableLayer* out = net.AddOutputLayer(0); + + armnn::Layer* addlayer = armnn::PolymorphicDowncast(add); + armnn::Layer* outlayer = armnn::PolymorphicDowncast(out); + + auto outTensorInfo = armnn::TensorInfo({1,2,2,1}, armnn::DataType::Float32); + addlayer->GetOutputSlot(0).Connect(outlayer->GetInputSlot(0)); + CHECK_FALSE(outlayer->GetInputSlot(0).IsTensorInfoSet()); + + addlayer->GetOutputSlot(0).SetTensorInfo(outTensorInfo); + auto testTensorInfo = outlayer->GetInputSlot(0).GetTensorInfo(); + + CHECK_EQ(outTensorInfo, testTensorInfo); + CHECK(outlayer->GetInputSlot(0).IsTensorInfoSet()); + CHECK_FALSE(outlayer->GetInputSlot(0).IsTensorInfoOverridden()); + + auto overRiddenTensorInfo = armnn::TensorInfo({2,2}, armnn::DataType::Float32); + outlayer->GetInputSlot(0).SetTensorInfo(overRiddenTensorInfo); + testTensorInfo = outlayer->GetInputSlot(0).GetTensorInfo(); + + // Confirm that inputslot TensorInfo is changed + CHECK_EQ(overRiddenTensorInfo, testTensorInfo); + // Confirm that outputslot TensorInfo is unchanged + CHECK_EQ(outTensorInfo, outlayer->GetInputSlot(0).GetConnection()->GetTensorInfo()); + + CHECK(outlayer->GetInputSlot(0).IsTensorInfoOverridden()); +} + +} + +} diff --git a/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp b/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp index 973d104195..90c0fd5890 100644 --- a/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp +++ b/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp @@ -23,7 +23,7 @@ namespace bool checkDataTypeInputandOutput(const Layer& layer) { - auto inputInfo = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + auto inputInfo = layer.GetInputSlot(0).GetTensorInfo(); auto outputInfo = layer.GetOutputSlot(0).GetTensorInfo(); bool sameDataType = (inputInfo.GetDataType() == outputInfo.GetDataType()); diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index d4e3fb784d..7042af1127 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -98,7 +98,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Activation: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsActivationSupported( OverrideDataType(input, dataType), @@ -110,8 +110,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Addition: { ARMNN_NO_DEPRECATE_WARN_BEGIN - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsAdditionSupported( OverrideDataType(input0, dataType), @@ -126,7 +126,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, auto cLayer = PolymorphicDowncast(&layer); const ArgMinMaxDescriptor& descriptor = cLayer->GetParameters(); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsArgMinMaxSupported( OverrideDataType(input, dataType), @@ -140,8 +140,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, auto cLayer = PolymorphicDowncast(&layer); const BatchMatMulDescriptor& descriptor = cLayer->GetParameters(); - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsBatchMatMulSupported( OverrideDataType(input0, dataType), @@ -154,7 +154,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::BatchNormalization: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); const TensorInfo& mean = cLayer->m_Mean->GetTensorInfo(); const TensorInfo& var = cLayer->m_Variance->GetTensorInfo(); @@ -173,7 +173,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::BatchToSpaceNd: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); auto cLayer = PolymorphicDowncast(&layer); @@ -185,7 +185,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Cast: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsCastSupported(OverrideDataType(input, dataType), @@ -197,8 +197,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& output = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& output = layer.GetInputSlot(0).GetTensorInfo(); const ChannelShuffleDescriptor descriptor = cLayer->GetParameters(); @@ -212,8 +212,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsComparisonSupported(OverrideDataType(input0, dataType), @@ -231,14 +231,14 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::ConvertFp16ToFp32: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsConvertFp16ToFp32Supported(input, output, reason); break; } case LayerType::ConvertFp32ToFp16: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsConvertFp32ToFp16Supported(input, output, reason); break; @@ -247,12 +247,12 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(), + const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(), dataType); const TensorInfo output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType); ARMNN_ASSERT_MSG(layer.GetInputSlot(1).GetConnection(), "Convolution2dLayer: Weights should be connected as a Constant Layer."); - const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), + const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(), dataType); const Convolution2dDescriptor& descriptor = cLayer->GetParameters(); @@ -263,7 +263,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { ARMNN_ASSERT_MSG(layer.GetInputSlot(2).GetConnection(), "Convolution2dLayer: Bias should be connected as a Constant Layer."); - biases = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(), + biases = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(), GetBiasTypeFromWeightsType(dataType)); } @@ -280,13 +280,13 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(), + const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(), dataType); const TensorInfo output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType); ARMNN_ASSERT_MSG(layer.GetInputSlot(1).GetConnection(), "Convolution3dLayer: Weights should be connected as a Constant Layer."); - const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), + const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(), dataType); const Convolution3dDescriptor& descriptor = cLayer->GetParameters(); @@ -295,7 +295,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, Optional biases; if (descriptor.m_BiasEnabled) { - biases = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(), + biases = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(), GetBiasTypeFromWeightsType(dataType)); } @@ -310,7 +310,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Debug: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsDebugSupported(OverrideDataType(input, dataType), @@ -322,7 +322,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsDepthToSpaceSupported(OverrideDataType(input, dataType), @@ -334,10 +334,10 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::DepthwiseConvolution2d: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(), + const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(), dataType); const TensorInfo& output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType); - const TensorInfo& weights = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), + const TensorInfo& weights = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(), dataType); ARMNN_ASSERT(cLayer->GetInputSlot(1).GetConnection() != nullptr); @@ -348,7 +348,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, Optional biases; if (descriptor.m_BiasEnabled) { - biases = OverrideDataType(cLayer->GetInputSlot(2).GetConnection()->GetTensorInfo(), + biases = OverrideDataType(cLayer->GetInputSlot(2).GetTensorInfo(), GetBiasTypeFromWeightsType(dataType)); } @@ -362,7 +362,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Dequantize: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsDequantizeSupported(input, @@ -373,8 +373,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::DetectionPostProcess: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& boxEncodings = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& scores = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& boxEncodings = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& scores = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& anchors = cLayer->m_Anchors->GetTensorInfo(); const TensorInfo& detectionBoxes = layer.GetOutputSlot(0).GetTensorInfo(); @@ -398,8 +398,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); std::vector infos = { OverrideDataType(input0, dataType), OverrideDataType(input1, dataType), @@ -416,7 +416,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsElementwiseUnarySupported(OverrideDataType(input, dataType), @@ -428,7 +428,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Fill: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); const FillDescriptor& descriptor = cLayer->GetParameters(); @@ -442,7 +442,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::FakeQuantization: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); result = layerSupportObject.IsFakeQuantizationSupported(OverrideDataType(input, dataType), cLayer->GetParameters(), reason); @@ -450,7 +450,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Floor: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsFloorSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -460,14 +460,14 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::FullyConnected: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); const FullyConnectedDescriptor& descriptor = cLayer->GetParameters(); TensorInfo weightsInfo; const TensorInfo* weightsInfoPtr = nullptr; - weightsInfo = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), dataType); + weightsInfo = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(), dataType); weightsInfoPtr = &weightsInfo; TensorInfo biasInfo; @@ -479,7 +479,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, if (descriptor.m_BiasEnabled) { - biasInfo = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(), dataType); + biasInfo = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(), dataType); biasInfoPtr = &biasInfo; } else @@ -527,8 +527,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Gather: { - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); auto cLayer = PolymorphicDowncast(&layer); const GatherDescriptor& descriptor = cLayer->GetParameters(); @@ -541,8 +541,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::GatherNd: { - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsGatherNdSupported(OverrideDataType(input0, dataType), input1, @@ -561,7 +561,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, auto cLayer = PolymorphicDowncast(&layer); const InstanceNormalizationDescriptor& descriptor = cLayer->GetParameters(); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsInstanceNormalizationSupported( @@ -576,7 +576,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, auto cLayer = PolymorphicDowncast(&layer); const L2NormalizationDescriptor& descriptor = cLayer->GetParameters(); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsL2NormalizationSupported( @@ -590,8 +590,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsLogicalBinarySupported(input0, @@ -605,7 +605,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsLogSoftmaxSupported(OverrideDataType(input, dataType), @@ -620,11 +620,11 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, const LstmDescriptor& descriptor = cLayer->GetParameters(); // All inputs. - const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(), + const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(), dataType); - const TensorInfo& outputStateIn = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), + const TensorInfo& outputStateIn = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(), dataType); - const TensorInfo& cellStateIn = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(), + const TensorInfo& cellStateIn = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(), dataType); // All outputs const TensorInfo& scratchBuffer = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType); @@ -761,8 +761,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Maximum: { ARMNN_NO_DEPRECATE_WARN_BEGIN - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMaximumSupported(OverrideDataType(input0, dataType), @@ -774,7 +774,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::MemCopy: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMemCopySupported(OverrideDataType(input, dataType), @@ -784,7 +784,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::MemImport: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMemImportSupported(OverrideDataType(input, dataType), @@ -794,8 +794,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Merge: { - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMergeSupported(OverrideDataType(input0, dataType), @@ -837,8 +837,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Multiplication: { ARMNN_NO_DEPRECATE_WARN_BEGIN - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMultiplicationSupported( OverrideDataType(input0, dataType), @@ -851,7 +851,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Normalization: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsNormalizationSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -861,14 +861,14 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Output: { - const TensorInfo& output = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& output = layer.GetInputSlot(0).GetTensorInfo(); result = layerSupportObject.IsOutputSupported(OverrideDataType(output, dataType), reason); break; } case LayerType::Permute: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsPermuteSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -879,7 +879,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Pad: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsPadSupported( OverrideDataType(input, dataType), @@ -891,7 +891,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Pooling2d: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsPooling2dSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -902,7 +902,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Pooling3d: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsPooling3dSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -913,7 +913,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::PreCompiled: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); result = layerSupportObject.IsPreCompiledSupported(OverrideDataType(input, dataType), cLayer->GetParameters(), reason); @@ -921,7 +921,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Quantize: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsQuantizeSupported(input, output, reason); break; @@ -932,9 +932,9 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, const QLstmDescriptor& descriptor = cLayer->GetParameters(); // Inputs - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& previousOutputIn = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); - const TensorInfo& previousCellStateIn = layer.GetInputSlot(2).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& previousOutputIn = layer.GetInputSlot(1).GetTensorInfo(); + const TensorInfo& previousCellStateIn = layer.GetInputSlot(2).GetTensorInfo(); // Outputs const TensorInfo& outputStateOut = layer.GetOutputSlot(0).GetTensorInfo(); @@ -1027,9 +1027,9 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, auto cLayer = PolymorphicDowncast(&layer); // Inputs - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& previousCellStateIn = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); - const TensorInfo& previousOutputIn = layer.GetInputSlot(2).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& previousCellStateIn = layer.GetInputSlot(1).GetTensorInfo(); + const TensorInfo& previousOutputIn = layer.GetInputSlot(2).GetTensorInfo(); // Outputs const TensorInfo& cellStateOut = layer.GetOutputSlot(0).GetTensorInfo(); @@ -1077,8 +1077,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Division: { ARMNN_NO_DEPRECATE_WARN_BEGIN - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsDivisionSupported( OverrideDataType(input0, dataType), @@ -1090,7 +1090,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Rank: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsRankSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1100,7 +1100,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Reshape: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsReshapeSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1111,7 +1111,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Resize: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsResizeSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1121,7 +1121,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Shape: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsShapeSupported(OverrideDataType(input, dataType), @@ -1133,7 +1133,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsSliceSupported(OverrideDataType(input, dataType), @@ -1145,7 +1145,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Softmax: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsSoftmaxSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1156,7 +1156,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::SpaceToBatchNd: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsSpaceToBatchNdSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1168,7 +1168,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsSpaceToDepthSupported(OverrideDataType(input, dataType), @@ -1180,7 +1180,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Splitter: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); // Get vector of all outputs. auto getTensorInfo = [&dataType](const OutputSlot& slot) @@ -1270,7 +1270,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::StridedSlice: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsStridedSliceSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1281,8 +1281,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Subtraction: { ARMNN_NO_DEPRECATE_WARN_BEGIN - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsSubtractionSupported( OverrideDataType(input0, dataType), @@ -1294,8 +1294,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Switch: { - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output0 = layer.GetOutputSlot(0).GetTensorInfo(); const TensorInfo& output1 = layer.GetOutputSlot(1).GetTensorInfo(); result = layerSupportObject.IsSwitchSupported(OverrideDataType(input0, dataType), @@ -1308,7 +1308,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Mean: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMeanSupported( OverrideDataType(input, dataType), @@ -1320,8 +1320,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Minimum: { ARMNN_NO_DEPRECATE_WARN_BEGIN - const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsMinimumSupported(OverrideDataType(input0, dataType), OverrideDataType(input1, dataType), @@ -1332,8 +1332,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, } case LayerType::Prelu: { - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); - const TensorInfo& alpha = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); + const TensorInfo& alpha = layer.GetInputSlot(1).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsPreluSupported(OverrideDataType(input, dataType), OverrideDataType(alpha, dataType), @@ -1344,7 +1344,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Transpose: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsTransposeSupported(OverrideDataType(input, dataType), OverrideDataType(output, dataType), @@ -1356,7 +1356,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(), + const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(), dataType); const TensorInfo output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType); @@ -1385,7 +1385,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, case LayerType::Reduce: { auto cLayer = PolymorphicDowncast(&layer); - const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo(); const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo(); result = layerSupportObject.IsReduceSupported(OverrideDataType(input, dataType), @@ -1400,7 +1400,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, const UnidirectionalSequenceLstmDescriptor& descriptor = cLayer->GetParameters(); // All inputs. - const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(), + const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(), dataType); const TensorInfo& outputStateIn = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), dataType); diff --git a/src/backends/tosaCommon/TosaMappings.cpp b/src/backends/tosaCommon/TosaMappings.cpp index 3932b62b7b..6ab1b06b30 100644 --- a/src/backends/tosaCommon/TosaMappings.cpp +++ b/src/backends/tosaCommon/TosaMappings.cpp @@ -101,7 +101,7 @@ TosaSerializationBasicBlock* GetTosaMappingFromLayer(Layer* layer) std::vector inputs; for (auto inputSlot : layer->GetInputSlots()) { - inputs.push_back(&inputSlot.GetConnection()->GetTensorInfo()); + inputs.push_back(&inputSlot.GetTensorInfo()); } std::vector outputs; -- cgit v1.2.1