1 // 2 // Copyright © 2020 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include "SampleMemoryManager.hpp" 8 9 #include <armnn/Optional.hpp> 10 #include <armnn/backends/WorkloadFactory.hpp> 11 12 namespace sdb // sample dynamic backend 13 { 14 15 // Sample Dynamic workload factory. 16 class SampleDynamicWorkloadFactory : public armnn::IWorkloadFactory 17 { 18 public: 19 explicit SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager); 20 SampleDynamicWorkloadFactory(); 21 ~SampleDynamicWorkloadFactory()22 ~SampleDynamicWorkloadFactory() {} 23 24 const armnn::BackendId& GetBackendId() const override; 25 26 static bool IsLayerSupported(const armnn::IConnectableLayer& layer, 27 armnn::Optional<armnn::DataType> dataType, 28 std::string& outReasonIfUnsupported); 29 SupportsSubTensors() const30 bool SupportsSubTensors() const override { return false; } 31 32 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead") CreateSubTensorHandle(armnn::ITensorHandle & parent,armnn::TensorShape const & subTensorShape,unsigned int const * subTensorOrigin) const33 std::unique_ptr<armnn::ITensorHandle> CreateSubTensorHandle( 34 armnn::ITensorHandle& parent, 35 armnn::TensorShape const& subTensorShape, 36 unsigned int const* subTensorOrigin) const override 37 { 38 IgnoreUnused(parent, subTensorShape, subTensorOrigin); 39 return nullptr; 40 } 41 42 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead") 43 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle( 44 const armnn::TensorInfo& tensorInfo, 45 const bool IsMemoryManaged = true) const override; 46 47 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead") 48 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle( 49 const armnn::TensorInfo& tensorInfo, 50 armnn::DataLayout dataLayout, 51 const bool IsMemoryManaged = true) const override; 52 53 std::unique_ptr<armnn::IWorkload> CreateAddition( 54 const armnn::AdditionQueueDescriptor& descriptor, 55 const armnn::WorkloadInfo& info) const override; 56 57 58 std::unique_ptr<armnn::IWorkload> CreateInput(const armnn::InputQueueDescriptor& descriptor, 59 const armnn::WorkloadInfo& info) const override; 60 61 std::unique_ptr<armnn::IWorkload> CreateOutput(const armnn::OutputQueueDescriptor& descriptor, 62 const armnn::WorkloadInfo& info) const override; 63 64 private: 65 mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager; 66 67 }; 68 69 } // namespace sdb 70