blob: 4a2b657f5d0c0640d70352a4f0a2a2c296aac8d6 [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>
10#include <backendsCommon/WorkloadFactory.hpp>
11
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,
55 const armnn::WorkloadInfo& info) const override;
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,
59 const armnn::WorkloadInfo& info) const override;
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,
62 const armnn::WorkloadInfo& info) const override;
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000063
64private:
65 mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager;
66
67};
68
Jan Eilersc84e45d2020-08-19 14:14:36 +010069} // namespace sdb