diff options
author | Finn Williams <Finn.Williams@arm.com> | 2020-06-10 15:53:46 +0100 |
---|---|---|
committer | Finn Williams <Finn.Williams@arm.com> | 2020-07-06 21:50:50 +0100 |
commit | 2605b236d103e1ba27069e0d668599042a4761af (patch) | |
tree | dc0a408acb5749a1f51544fd5857452377d05aab /src/armnn/layers/RankLayer.cpp | |
parent | c5789ca2e432075e2c92e7e0d99139c5329280e6 (diff) | |
download | armnn-2605b236d103e1ba27069e0d668599042a4761af.tar.gz |
IVGCVSW-4624 Add a RANK Reference Implementation
* Add Rank front end
* Add Rank reference implementation
* Add Rank serialization support
* Add Scalar serialization support
Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I06e4a468c2a84e79bae2e6c5348596bbbf853b4b
Diffstat (limited to 'src/armnn/layers/RankLayer.cpp')
-rw-r--r-- | src/armnn/layers/RankLayer.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/armnn/layers/RankLayer.cpp b/src/armnn/layers/RankLayer.cpp new file mode 100644 index 0000000000..f1a24b1633 --- /dev/null +++ b/src/armnn/layers/RankLayer.cpp @@ -0,0 +1,47 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "RankLayer.hpp" + +#include "LayerCloneBase.hpp" + +#include <backendsCommon/WorkloadData.hpp> +#include <backendsCommon/WorkloadFactory.hpp> + +namespace armnn +{ + +RankLayer::RankLayer(const char* name) + : Layer(1, 1, LayerType::Rank, name) +{} + +std::unique_ptr<IWorkload> RankLayer::CreateWorkload(const IWorkloadFactory& factory) const +{ + RankQueueDescriptor descriptor; + return factory.CreateRank(descriptor, PrepInfoAndDesc(descriptor)); +} + +Layer* RankLayer::Clone(Graph& graph) const +{ + RankLayer* clone = CloneBase<RankLayer>(graph, GetName()); + return clone; +} + +void RankLayer::ValidateTensorShapesFromInputs(ShapeInferenceMethod shapeInferenceMethod) +{ + IgnoreUnused(shapeInferenceMethod); + VerifyLayerConnections(1, CHECK_LOCATION()); + + ConditionalThrowIfNotEqual<LayerValidationException>( + "Rank: TensorShape set on OutputSlot[0] does not match the inferred shape.", + GetOutputSlot(0).GetTensorInfo().GetShape(), {TensorShape{Dimensionality::Scalar}}); +} + +void RankLayer::Accept(ILayerVisitor& visitor) const +{ + visitor.VisitRankLayer(this, GetName()); +} + +} //namespace armnn
\ No newline at end of file |