diff options
author | Francis Murtagh <francis.murtagh@arm.com> | 2023-08-08 10:38:25 +0100 |
---|---|---|
committer | Nikhil Raj Arm <nikhil.raj@arm.com> | 2023-08-08 15:47:11 +0000 |
commit | a5048344b5dc95cf305d7ffdc7390ef6df109f4c (patch) | |
tree | da218b344fa7fba047dbae5f41359fe417833765 /src | |
parent | 9a189071c3439e6e8de7845b96a509ca58d9363f (diff) | |
download | armnn-a5048344b5dc95cf305d7ffdc7390ef6df109f4c.tar.gz |
IVGCVSW-7635 Remove deprecated code due to be removed in 23.08 (ILayerSupport)
* Fix failure in SampleDynamicLayerSupport and SampleDynamicWorkloadFactory.
* Provide implementation of CreateWorkload() accepting LayerType
* Made WorkloadFactory::CreateWorkload() pure virtual again to force
backend API users to implement.
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Change-Id: Iecd180214a92c9fd7174fd36ae8aa2bdbc9d3deb
Diffstat (limited to 'src')
-rw-r--r-- | src/backends/backendsCommon/WorkloadFactory.cpp | 16 | ||||
-rw-r--r-- | src/dynamic/sample/SampleDynamicLayerSupport.hpp | 8 | ||||
-rw-r--r-- | src/dynamic/sample/SampleDynamicWorkloadFactory.cpp | 30 | ||||
-rw-r--r-- | src/dynamic/sample/SampleDynamicWorkloadFactory.hpp | 10 |
4 files changed, 41 insertions, 23 deletions
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index 7a9e46ce7d..f067056ce1 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -1611,20 +1611,4 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId, modelOptions); } -/// Backends should implement their own CreateWorkload function with a switch statement. -/// The case for the switch should be the LayerType and based on that they will call their -/// specific workload creation functionality. -std::unique_ptr<IWorkload> IWorkloadFactory::CreateWorkload(LayerType type, - const QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - IgnoreUnused(descriptor); - IgnoreUnused(info); - switch(type) - { - default: - return std::unique_ptr<IWorkload>(); - } -} - } // namepsace armnn diff --git a/src/dynamic/sample/SampleDynamicLayerSupport.hpp b/src/dynamic/sample/SampleDynamicLayerSupport.hpp index 2f0744aab7..3881ad760e 100644 --- a/src/dynamic/sample/SampleDynamicLayerSupport.hpp +++ b/src/dynamic/sample/SampleDynamicLayerSupport.hpp @@ -16,20 +16,20 @@ public: bool IsAdditionSupported(const armnn::TensorInfo& input0, const armnn::TensorInfo& input1, const armnn::TensorInfo& output, - armnn::Optional<std::string&> reasonIfUnsupported = armnn::EmptyOptional()) const override; + armnn::Optional<std::string&> reasonIfUnsupported = armnn::EmptyOptional()) const; bool IsInputSupported(const armnn::TensorInfo& input, - armnn::Optional<std::string&> reasonIfUnsupported) const override; + armnn::Optional<std::string&> reasonIfUnsupported) const; bool IsOutputSupported(const armnn::TensorInfo& output, - armnn::Optional<std::string&> reasonIfUnsupported) const override; + armnn::Optional<std::string&> reasonIfUnsupported) const; bool IsLayerSupported(const armnn::LayerType& type, const std::vector<armnn::TensorInfo>& infos, const armnn::BaseDescriptor& descriptor, const armnn::Optional<armnn::LstmInputParamsInfo>& lstmParamsInfo, const armnn::Optional<armnn::QuantizedLstmInputParamsInfo>& quantizedLstmParamsInfo, - armnn::Optional<std::string&> reasonIfUnsupported = armnn::EmptyOptional()) const override; + armnn::Optional<std::string&> reasonIfUnsupported = armnn::EmptyOptional()) const; }; } // namespace sdb diff --git a/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp b/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp index 8796716c98..d4be0fcb3e 100644 --- a/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp +++ b/src/dynamic/sample/SampleDynamicWorkloadFactory.cpp @@ -5,6 +5,7 @@ #include <armnn/backends/MemCopyWorkload.hpp> #include <armnn/backends/TensorHandle.hpp> +#include <armnn/utility/PolymorphicDowncast.hpp> #include "SampleDynamicAdditionWorkload.hpp" #include "SampleDynamicBackend.hpp" @@ -77,4 +78,33 @@ std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateOutput( return std::make_unique<armnn::CopyMemGenericWorkload>(descriptor, info); } +std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateWorkload( + armnn::LayerType type, + const armnn::QueueDescriptor& descriptor, + const armnn::WorkloadInfo& info) const +{ + using namespace armnn; + using namespace sdb; + switch(type) + { + case LayerType::Addition: + { + auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor); + return std::make_unique<SampleDynamicAdditionWorkload>(*additionQueueDescriptor, info); + } + case LayerType::Input: + { + auto inputQueueDescriptor = PolymorphicDowncast<const InputQueueDescriptor*>(&descriptor); + return std::make_unique<CopyMemGenericWorkload>(*inputQueueDescriptor, info); + } + case LayerType::Output: + { + auto outputQueueDescriptor = PolymorphicDowncast<const OutputQueueDescriptor*>(&descriptor); + return std::make_unique<CopyMemGenericWorkload>(*outputQueueDescriptor, info); + } + default: + return nullptr; + } +} + } // namespace sdb diff --git a/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp b/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp index a5a31e5d6e..8cd36c5518 100644 --- a/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp +++ b/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp @@ -52,14 +52,18 @@ public: std::unique_ptr<armnn::IWorkload> CreateAddition( const armnn::AdditionQueueDescriptor& descriptor, - const armnn::WorkloadInfo& info) const override; + const armnn::WorkloadInfo& info) const; std::unique_ptr<armnn::IWorkload> CreateInput(const armnn::InputQueueDescriptor& descriptor, - const armnn::WorkloadInfo& info) const override; + const armnn::WorkloadInfo& info) const; std::unique_ptr<armnn::IWorkload> CreateOutput(const armnn::OutputQueueDescriptor& descriptor, - const armnn::WorkloadInfo& info) const override; + const armnn::WorkloadInfo& info) const; + + std::unique_ptr<armnn::IWorkload> CreateWorkload(armnn::LayerType type, + const armnn::QueueDescriptor& descriptor, + const armnn::WorkloadInfo& info) const override; private: mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager; |