diff options
Diffstat (limited to 'src/armnn/layers')
-rw-r--r-- | src/armnn/layers/MergerLayer.cpp | 2 | ||||
-rw-r--r-- | src/armnn/layers/PreCompiledLayer.cpp | 56 | ||||
-rw-r--r-- | src/armnn/layers/PreCompiledLayer.hpp | 42 |
3 files changed, 99 insertions, 1 deletions
diff --git a/src/armnn/layers/MergerLayer.cpp b/src/armnn/layers/MergerLayer.cpp index 85dc0e7609..b4b5d3c2ef 100644 --- a/src/armnn/layers/MergerLayer.cpp +++ b/src/armnn/layers/MergerLayer.cpp @@ -180,7 +180,7 @@ void MergerLayer::ValidateTensorShapesFromInputs() VerifyLayerConnections(m_Param.GetNumViews(), CHECK_LOCATION()); std::vector<TensorShape> inputShapes; - for (uint i = 0; i < GetNumInputSlots(); ++i) + for (unsigned int i = 0; i < GetNumInputSlots(); ++i) { inputShapes.push_back(GetInputSlot(i).GetConnection()->GetTensorInfo().GetShape()); } diff --git a/src/armnn/layers/PreCompiledLayer.cpp b/src/armnn/layers/PreCompiledLayer.cpp new file mode 100644 index 0000000000..c443f9ae79 --- /dev/null +++ b/src/armnn/layers/PreCompiledLayer.cpp @@ -0,0 +1,56 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "PreCompiledLayer.hpp" + +#include "LayerCloneBase.hpp" + +#include "backendsCommon/Workload.hpp" + +#include <armnn/TypesUtils.hpp> + +namespace armnn +{ + +PreCompiledLayer::PreCompiledLayer(const PreCompiledDescriptor& param, const char* name) + : LayerWithParameters(param.m_NumInputSlots, param.m_NumOutputSlots, LayerType::PreCompiled, param, name) + , m_PreCompiledObject(nullptr) +{} + +PreCompiledLayer::~PreCompiledLayer() +{} + +PreCompiledLayer* PreCompiledLayer::Clone(Graph& graph) const +{ + PreCompiledLayer* clone = CloneBase<PreCompiledLayer>(graph, m_Param, GetName()); + clone->m_PreCompiledObject = this->m_PreCompiledObject; + return clone; +} + +std::unique_ptr<IWorkload> PreCompiledLayer::CreateWorkload(const armnn::Graph& graph, + const armnn::IWorkloadFactory& factory) const +{ + PreCompiledQueueDescriptor descriptor; + descriptor.m_PreCompiledObject = m_PreCompiledObject; + return factory.CreatePreCompiled(descriptor, PrepInfoAndDesc(descriptor, graph)); +} + +void PreCompiledLayer::ValidateTensorShapesFromInputs() +{ + // NOTE: since the PreCompiledLayer is an internal layer created from a valid SubGraph, + // we do not need to validate its input shapes +} + +std::shared_ptr<void> PreCompiledLayer::GetPreCompiledObject() const +{ + return m_PreCompiledObject; +} + +void PreCompiledLayer::SetPreCompiledObject(const std::shared_ptr<void>& preCompiledObject) +{ + m_PreCompiledObject = preCompiledObject; +} + +} // namespace armnn diff --git a/src/armnn/layers/PreCompiledLayer.hpp b/src/armnn/layers/PreCompiledLayer.hpp new file mode 100644 index 0000000000..fd28d0e7a8 --- /dev/null +++ b/src/armnn/layers/PreCompiledLayer.hpp @@ -0,0 +1,42 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "LayerWithParameters.hpp" +#include <backendsCommon/WorkloadFactory.hpp> + +#include <armnn/Descriptors.hpp> + +#include <memory> + +namespace armnn +{ + +class PreCompiledLayer : public LayerWithParameters<PreCompiledDescriptor> +{ +public: + PreCompiledLayer(const PreCompiledDescriptor& param, const char* name); + ~PreCompiledLayer(); + + virtual std::unique_ptr<IWorkload> CreateWorkload(const Graph& graph, + const IWorkloadFactory& factory) const override; + + PreCompiledLayer* Clone(Graph &graph) const override; + + void ValidateTensorShapesFromInputs() override; + + std::shared_ptr<void> GetPreCompiledObject() const; + + void SetPreCompiledObject(const std::shared_ptr<void>& preCompiledObject); + +private: + PreCompiledLayer(const PreCompiledLayer& other) = delete; + PreCompiledLayer& operator=(const PreCompiledLayer& other) = delete; + + std::shared_ptr<void> m_PreCompiledObject; +}; + +} // namespace armnn |