blob: 0fb5504f41908ce0aa7856a76fe3f90a6dafbe0a [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
6#include <backendsCommon/CpuTensorHandle.hpp>
7#include <backendsCommon/MemCopyWorkload.hpp>
8
9#include "SampleDynamicAdditionWorkload.hpp"
10#include "SampleDynamicBackend.hpp"
11#include "SampleDynamicWorkloadFactory.hpp"
12#include "SampleTensorHandle.hpp"
13
14namespace armnn
15{
16
17namespace
18{
19static const BackendId s_Id{ GetBackendId() };
20}
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
32const BackendId& SampleDynamicWorkloadFactory::GetBackendId() const
33{
34 return s_Id;
35}
36
37bool SampleDynamicWorkloadFactory::IsLayerSupported(const IConnectableLayer& layer,
38 Optional<DataType> dataType,
39 std::string& outReasonIfUnsupported)
40{
41 return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
42}
43
44std::unique_ptr<ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
45 const bool isMemoryManaged) const
46{
47 return std::make_unique<ScopedCpuTensorHandle>(tensorInfo);
48}
49
50std::unique_ptr<ITensorHandle> SampleDynamicWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
51 DataLayout dataLayout,
52 const bool isMemoryManaged) const
53{
54 return std::make_unique<ScopedCpuTensorHandle>(tensorInfo);
55}
56
57std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor,
58 const WorkloadInfo& info) const
59{
60 return std::make_unique<SampleDynamicAdditionWorkload>(descriptor, info);
61}
62
63std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor,
64 const WorkloadInfo& info) const
65{
66 return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
67}
68
69std::unique_ptr<IWorkload> SampleDynamicWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor,
70 const WorkloadInfo& info) const
71{
72 return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
73}
74
75} // namespace armnn