blob: 8796716c982d06d4c97350beeb8a6e2b5f341686 [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
Colm Donelan0c479742021-12-10 12:43:54 +00006#include <armnn/backends/MemCopyWorkload.hpp>
7#include <armnn/backends/TensorHandle.hpp>
Narumol Prangnawarat867eba52020-02-03 12:29:56 +00008
9#include "SampleDynamicAdditionWorkload.hpp"
10#include "SampleDynamicBackend.hpp"
11#include "SampleDynamicWorkloadFactory.hpp"
12#include "SampleTensorHandle.hpp"
13
Jan Eilersc84e45d2020-08-19 14:14:36 +010014namespace sdb // sample dynamic backend
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000015{
16
17namespace
18{
Jan Eilersc84e45d2020-08-19 14:14:36 +010019static const armnn::BackendId s_Id{ GetBackendId() };
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000020}
21
22SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory(const std::shared_ptr<SampleMemoryManager>& memoryManager)
23 : m_MemoryManager(memoryManager)
24{
25}
26
27SampleDynamicWorkloadFactory::SampleDynamicWorkloadFactory()
28 : m_MemoryManager(new SampleMemoryManager())
29{
30}
31
Jan Eilersc84e45d2020-08-19 14:14:36 +010032const armnn::BackendId& SampleDynamicWorkloadFactory::GetBackendId() const
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000033{
34 return s_Id;
35}
36
Jan Eilersc84e45d2020-08-19 14:14:36 +010037bool SampleDynamicWorkloadFactory::IsLayerSupported(const armnn::IConnectableLayer& layer,
38 armnn::Optional<armnn::DataType> dataType,
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000039 std::string& outReasonIfUnsupported)
40{
41 return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
42}
43
Jan Eilersc84e45d2020-08-19 14:14:36 +010044std::unique_ptr<armnn::ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(
45 const armnn::TensorInfo& tensorInfo,
46 const bool isMemoryManaged) const
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000047{
James Conroy1f58f032021-04-27 17:13:27 +010048 return std::make_unique<armnn::ScopedTensorHandle>(tensorInfo);
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000049}
50
Jan Eilersc84e45d2020-08-19 14:14:36 +010051std::unique_ptr<armnn::ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(
52 const armnn::TensorInfo& tensorInfo,
53 armnn::DataLayout dataLayout,
54 const bool isMemoryManaged) const
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000055{
James Conroy1f58f032021-04-27 17:13:27 +010056 return std::make_unique<armnn::ScopedTensorHandle>(tensorInfo);
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000057}
58
Jan Eilersc84e45d2020-08-19 14:14:36 +010059std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateAddition(
60 const armnn::AdditionQueueDescriptor& descriptor,
61 const armnn::WorkloadInfo& info) const
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000062{
63 return std::make_unique<SampleDynamicAdditionWorkload>(descriptor, info);
64}
65
Jan Eilersc84e45d2020-08-19 14:14:36 +010066std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateInput(
67 const armnn::InputQueueDescriptor& descriptor,
68 const armnn::WorkloadInfo& info) const
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000069{
Jan Eilersc84e45d2020-08-19 14:14:36 +010070 return std::make_unique<armnn::CopyMemGenericWorkload>(descriptor, info);
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000071}
72
Jan Eilersc84e45d2020-08-19 14:14:36 +010073std::unique_ptr<armnn::IWorkload> SampleDynamicWorkloadFactory::CreateOutput(
74 const armnn::OutputQueueDescriptor& descriptor,
75 const armnn::WorkloadInfo& info) const
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000076{
Jan Eilersc84e45d2020-08-19 14:14:36 +010077 return std::make_unique<armnn::CopyMemGenericWorkload>(descriptor, info);
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000078}
79
Jan Eilersc84e45d2020-08-19 14:14:36 +010080} // namespace sdb