diff options
author | FrancisMurtagh <francis.murtagh@arm.com> | 2018-12-17 12:11:36 +0000 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2018-12-17 17:25:46 +0000 |
commit | 2099595bac339c953bf4291be12703c8845e916e (patch) | |
tree | 9a3153b05de960c06f2f56de84138e40457298cf /src/armnn | |
parent | 6c46dd3e126410e7abff1cb4b2a8e1f753a3ca47 (diff) | |
download | armnn-2099595bac339c953bf4291be12703c8845e916e.tar.gz |
IVGCVSW-2398 Add no-op factory implementations for all backends for the
Equal operation
* Add QueueDescriptor in WorkloadData.hpp
* Add CreateEqual function in WorkloadFactory.hpp
* Added stub implementation of the CreateEqual function in RefWorkloadFactory,
NeonWorkloadFactory and ClWorkloadFactory
Change-Id: Iec6dc2f989c67fa6f0c32cfb93508995c8580783
Diffstat (limited to 'src/armnn')
-rw-r--r-- | src/armnn/InternalTypes.cpp | 1 | ||||
-rw-r--r-- | src/armnn/InternalTypes.hpp | 1 | ||||
-rw-r--r-- | src/armnn/LayerSupport.cpp | 10 | ||||
-rw-r--r-- | src/armnn/LayersFwd.hpp | 2 | ||||
-rw-r--r-- | src/armnn/Network.cpp | 5 | ||||
-rw-r--r-- | src/armnn/Network.hpp | 2 | ||||
-rw-r--r-- | src/armnn/layers/EqualLayer.cpp | 34 | ||||
-rw-r--r-- | src/armnn/layers/EqualLayer.hpp | 26 |
8 files changed, 81 insertions, 0 deletions
diff --git a/src/armnn/InternalTypes.cpp b/src/armnn/InternalTypes.cpp index 845ba9ec0c..fe806f1ccb 100644 --- a/src/armnn/InternalTypes.cpp +++ b/src/armnn/InternalTypes.cpp @@ -25,6 +25,7 @@ char const* GetLayerTypeAsCString(LayerType type) case LayerType::Debug: return "Debug"; case LayerType::DepthwiseConvolution2d: return "DepthwiseConvolution2d"; case LayerType::Division: return "Division"; + case LayerType::Equal: return "Equal"; case LayerType::FakeQuantization: return "FakeQuantization"; case LayerType::Floor: return "Floor"; case LayerType::FullyConnected: return "FullyConnected"; diff --git a/src/armnn/InternalTypes.hpp b/src/armnn/InternalTypes.hpp index 27a1359f68..c6b5c04665 100644 --- a/src/armnn/InternalTypes.hpp +++ b/src/armnn/InternalTypes.hpp @@ -25,6 +25,7 @@ enum class LayerType Debug, DepthwiseConvolution2d, Division, + Equal, FakeQuantization, Floor, FullyConnected, diff --git a/src/armnn/LayerSupport.cpp b/src/armnn/LayerSupport.cpp index d1161b63b1..3c864c5ae7 100644 --- a/src/armnn/LayerSupport.cpp +++ b/src/armnn/LayerSupport.cpp @@ -455,4 +455,14 @@ bool IsGreaterSupported(const BackendId& backend, FORWARD_LAYER_SUPPORT_FUNC(backend, IsGreaterSupported, input0, input1, output); } +bool IsEqualSupported(const BackendId& backend, + const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output, + char* reasonIfUnsupported, + size_t reasonIfUnsupportedMaxLength) +{ + FORWARD_LAYER_SUPPORT_FUNC(backend, IsEqualSupported, input0, input1, output); +} + } diff --git a/src/armnn/LayersFwd.hpp b/src/armnn/LayersFwd.hpp index 39b0b20b21..c9a12a6643 100644 --- a/src/armnn/LayersFwd.hpp +++ b/src/armnn/LayersFwd.hpp @@ -17,6 +17,7 @@ #include "layers/DebugLayer.hpp" #include "layers/DepthwiseConvolution2dLayer.hpp" #include "layers/DivisionLayer.hpp" +#include "layers/EqualLayer.hpp" #include "layers/FakeQuantizationLayer.hpp" #include "layers/FloorLayer.hpp" #include "layers/FullyConnectedLayer.hpp" @@ -81,6 +82,7 @@ DECLARE_LAYER(Convolution2d) DECLARE_LAYER(Debug) DECLARE_LAYER(DepthwiseConvolution2d) DECLARE_LAYER(Division) +DECLARE_LAYER(Equal) DECLARE_LAYER(FakeQuantization) DECLARE_LAYER(Floor) DECLARE_LAYER(FullyConnected) diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index 7a7e1800f2..d798c84a62 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -722,6 +722,11 @@ IConnectableLayer* Network::AddGreaterLayer(const char* name) return m_Graph->AddLayer<GreaterLayer>(name); } +IConnectableLayer* Network::AddEqualLayer(const char* name) +{ + return m_Graph->AddLayer<GreaterLayer>(name); +} + OptimizedNetwork::OptimizedNetwork(std::unique_ptr<Graph> graph) : m_Graph(std::move(graph)) { diff --git a/src/armnn/Network.hpp b/src/armnn/Network.hpp index 31e86ac0b9..f36ca4fa74 100644 --- a/src/armnn/Network.hpp +++ b/src/armnn/Network.hpp @@ -137,6 +137,8 @@ public: IConnectableLayer* AddGreaterLayer(const char* name = nullptr) override; + IConnectableLayer* AddEqualLayer(const char* name = nullptr) override; + private: IConnectableLayer* AddFullyConnectedLayerImpl(const FullyConnectedDescriptor& fullyConnectedDescriptor, const ConstTensor& weights, diff --git a/src/armnn/layers/EqualLayer.cpp b/src/armnn/layers/EqualLayer.cpp new file mode 100644 index 0000000000..e0d2e65309 --- /dev/null +++ b/src/armnn/layers/EqualLayer.cpp @@ -0,0 +1,34 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "EqualLayer.hpp" + +#include "LayerCloneBase.hpp" + +#include <armnn/TypesUtils.hpp> +#include <backendsCommon/WorkloadData.hpp> +#include <backendsCommon/WorkloadFactory.hpp> + +namespace armnn +{ + +EqualLayer::EqualLayer(const char* name) + : ElementwiseBaseLayer(2, 1, LayerType::Equal, name) +{ +} + +std::unique_ptr<IWorkload> EqualLayer::CreateWorkload(const Graph& graph, + const IWorkloadFactory& factory) const +{ + EqualQueueDescriptor descriptor; + return factory.CreateEqual(descriptor, PrepInfoAndDesc(descriptor, graph)); +} + +EqualLayer* EqualLayer::Clone(Graph& graph) const +{ + return CloneBase<EqualLayer>(graph, GetName()); +} + +} // namespace armnn diff --git a/src/armnn/layers/EqualLayer.hpp b/src/armnn/layers/EqualLayer.hpp new file mode 100644 index 0000000000..956ae3c1ab --- /dev/null +++ b/src/armnn/layers/EqualLayer.hpp @@ -0,0 +1,26 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "ElementwiseBaseLayer.hpp" + +namespace armnn +{ + +class EqualLayer : public ElementwiseBaseLayer +{ +public: + virtual std::unique_ptr<IWorkload> CreateWorkload(const Graph& graph, + const IWorkloadFactory& factory) const override; + + EqualLayer* Clone(Graph& graph) const override; + +protected: + EqualLayer(const char* name); + ~EqualLayer() = default; +}; + +} //namespace armnn |