blob: 8cd36c5518bbb1f7a71885460c1e2daa8eecda4d [file] [log] [blame]
Narumol Prangnawarat867eba52020-02-03 12:29:56 +00001//
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>
Colm Donelan0c479742021-12-10 12:43:54 +000010#include <armnn/backends/WorkloadFactory.hpp>
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000011
Jan Eilersc84e45d2020-08-19 14:14:36 +010012namespace sdb // sample dynamic backend
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000013{
14
15// Sample Dynamic workload factory.
Jan Eilersc84e45d2020-08-19 14:14:36 +010016class SampleDynamicWorkloadFactory : public armnn::IWorkloadFactory
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000017{
18public:
19 explicit SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager);
20 SampleDynamicWorkloadFactory();
21
22 ~SampleDynamicWorkloadFactory() {}
23
Jan Eilersc84e45d2020-08-19 14:14:36 +010024 const armnn::BackendId& GetBackendId() const override;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000025
Jan Eilersc84e45d2020-08-19 14:14:36 +010026 static bool IsLayerSupported(const armnn::IConnectableLayer& layer,
27 armnn::Optional<armnn::DataType> dataType,
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000028 std::string& outReasonIfUnsupported);
29
30 bool SupportsSubTensors() const override { return false; }
31
Sadik Armaganc83eb252020-07-22 16:32:06 +010032 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead")
Jan Eilersc84e45d2020-08-19 14:14:36 +010033 std::unique_ptr<armnn::ITensorHandle> CreateSubTensorHandle(
34 armnn::ITensorHandle& parent,
35 armnn::TensorShape const& subTensorShape,
36 unsigned int const* subTensorOrigin) const override
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000037 {
Jan Eilers8eb25602020-03-09 12:13:48 +000038 IgnoreUnused(parent, subTensorShape, subTensorOrigin);
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000039 return nullptr;
40 }
41
Sadik Armaganc83eb252020-07-22 16:32:06 +010042 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
Jan Eilersc84e45d2020-08-19 14:14:36 +010043 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(
44 const armnn::TensorInfo& tensorInfo,
45 const bool IsMemoryManaged = true) const override;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000046
Sadik Armaganc83eb252020-07-22 16:32:06 +010047 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
Jan Eilersc84e45d2020-08-19 14:14:36 +010048 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(
49 const armnn::TensorInfo& tensorInfo,
50 armnn::DataLayout dataLayout,
51 const bool IsMemoryManaged = true) const override;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000052
Jan Eilersc84e45d2020-08-19 14:14:36 +010053 std::unique_ptr<armnn::IWorkload> CreateAddition(
54 const armnn::AdditionQueueDescriptor& descriptor,
Francis Murtagha5048342023-08-08 10:38:25 +010055 const armnn::WorkloadInfo& info) const;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000056
57
Jan Eilersc84e45d2020-08-19 14:14:36 +010058 std::unique_ptr<armnn::IWorkload> CreateInput(const armnn::InputQueueDescriptor& descriptor,
Francis Murtagha5048342023-08-08 10:38:25 +010059 const armnn::WorkloadInfo& info) const;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000060
Jan Eilersc84e45d2020-08-19 14:14:36 +010061 std::unique_ptr<armnn::IWorkload> CreateOutput(const armnn::OutputQueueDescriptor& descriptor,
Francis Murtagha5048342023-08-08 10:38:25 +010062 const armnn::WorkloadInfo& info) const;
63
64 std::unique_ptr<armnn::IWorkload> CreateWorkload(armnn::LayerType type,
65 const armnn::QueueDescriptor& descriptor,
66 const armnn::WorkloadInfo& info) const override;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000067
68private:
69 mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager;
70
71};
72
Jan Eilersc84e45d2020-08-19 14:14:36 +010073} // namespace sdb