xref: /aosp_15_r20/external/armnn/src/dynamic/sample/SampleDynamicWorkloadFactory.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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