blob: a80aa832154cecd7e4373b84a88e42a1d47fee33 [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
12namespace armnn
13{
14
15// Sample Dynamic workload factory.
16class SampleDynamicWorkloadFactory : public IWorkloadFactory
17{
18public:
19 explicit SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager);
20 SampleDynamicWorkloadFactory();
21
22 ~SampleDynamicWorkloadFactory() {}
23
24 const BackendId& GetBackendId() const override;
25
26 static bool IsLayerSupported(const IConnectableLayer& layer,
27 Optional<DataType> dataType,
28 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")
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000033 std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
34 TensorShape const& subTensorShape,
35 unsigned int const* subTensorOrigin) const override
36 {
Jan Eilers8eb25602020-03-09 12:13:48 +000037 IgnoreUnused(parent, subTensorShape, subTensorOrigin);
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000038 return nullptr;
39 }
40
Sadik Armaganc83eb252020-07-22 16:32:06 +010041 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000042 std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
43 const bool IsMemoryManaged = true) const override;
44
Sadik Armaganc83eb252020-07-22 16:32:06 +010045 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000046 std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
47 DataLayout dataLayout,
48 const bool IsMemoryManaged = true) const override;
49
50 std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
51 const WorkloadInfo& info) const override;
52
53
54 std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
55 const WorkloadInfo& info) const override;
56
57 std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
58 const WorkloadInfo& info) const override;
59
60private:
61 mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager;
62
63};
64
65} // namespace armnn