blob: 88b67987e142095958c76676815c04670281d44d [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
32 std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
33 TensorShape const& subTensorShape,
34 unsigned int const* subTensorOrigin) const override
35 {
36 boost::ignore_unused(parent, subTensorShape, subTensorOrigin);
37 return nullptr;
38 }
39
40 std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
41 const bool IsMemoryManaged = true) const override;
42
43 std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
44 DataLayout dataLayout,
45 const bool IsMemoryManaged = true) const override;
46
47 std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
48 const WorkloadInfo& info) const override;
49
50
51 std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
52 const WorkloadInfo& info) const override;
53
54 std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
55 const WorkloadInfo& info) const override;
56
57private:
58 mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager;
59
60};
61
62} // namespace armnn