Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 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> |
Colm Donelan | 0c47974 | 2021-12-10 12:43:54 +0000 | [diff] [blame] | 10 | #include <armnn/backends/WorkloadFactory.hpp> |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 11 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 12 | namespace sdb // sample dynamic backend |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 13 | { |
| 14 | |
| 15 | // Sample Dynamic workload factory. |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 16 | class SampleDynamicWorkloadFactory : public armnn::IWorkloadFactory |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 17 | { |
| 18 | public: |
| 19 | explicit SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager); |
| 20 | SampleDynamicWorkloadFactory(); |
| 21 | |
| 22 | ~SampleDynamicWorkloadFactory() {} |
| 23 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 24 | const armnn::BackendId& GetBackendId() const override; |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 25 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 26 | static bool IsLayerSupported(const armnn::IConnectableLayer& layer, |
| 27 | armnn::Optional<armnn::DataType> dataType, |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 28 | std::string& outReasonIfUnsupported); |
| 29 | |
| 30 | bool SupportsSubTensors() const override { return false; } |
| 31 | |
Sadik Armagan | c83eb25 | 2020-07-22 16:32:06 +0100 | [diff] [blame] | 32 | ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead") |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 33 | std::unique_ptr<armnn::ITensorHandle> CreateSubTensorHandle( |
| 34 | armnn::ITensorHandle& parent, |
| 35 | armnn::TensorShape const& subTensorShape, |
| 36 | unsigned int const* subTensorOrigin) const override |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 37 | { |
Jan Eilers | 8eb2560 | 2020-03-09 12:13:48 +0000 | [diff] [blame] | 38 | IgnoreUnused(parent, subTensorShape, subTensorOrigin); |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 39 | return nullptr; |
| 40 | } |
| 41 | |
Sadik Armagan | c83eb25 | 2020-07-22 16:32:06 +0100 | [diff] [blame] | 42 | ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead") |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 43 | std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle( |
| 44 | const armnn::TensorInfo& tensorInfo, |
| 45 | const bool IsMemoryManaged = true) const override; |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 46 | |
Sadik Armagan | c83eb25 | 2020-07-22 16:32:06 +0100 | [diff] [blame] | 47 | ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead") |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 48 | std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle( |
| 49 | const armnn::TensorInfo& tensorInfo, |
| 50 | armnn::DataLayout dataLayout, |
| 51 | const bool IsMemoryManaged = true) const override; |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 52 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 53 | std::unique_ptr<armnn::IWorkload> CreateAddition( |
| 54 | const armnn::AdditionQueueDescriptor& descriptor, |
| 55 | const armnn::WorkloadInfo& info) const override; |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 56 | |
| 57 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 58 | std::unique_ptr<armnn::IWorkload> CreateInput(const armnn::InputQueueDescriptor& descriptor, |
| 59 | const armnn::WorkloadInfo& info) const override; |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 60 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 61 | std::unique_ptr<armnn::IWorkload> CreateOutput(const armnn::OutputQueueDescriptor& descriptor, |
| 62 | const armnn::WorkloadInfo& info) const override; |
Narumol Prangnawarat | 867eba5 | 2020-02-03 12:29:56 +0000 | [diff] [blame] | 63 | |
| 64 | private: |
| 65 | mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager; |
| 66 | |
| 67 | }; |
| 68 | |
Jan Eilers | c84e45d | 2020-08-19 14:14:36 +0100 | [diff] [blame] | 69 | } // namespace sdb |