blob: 1cca61efa50ebcab49946989416e4df0063eda80 [file] [log] [blame]
Matteo Martincighd0dc7702019-08-01 17:09:03 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Matteo Martincighe5b8eb92019-11-28 15:45:42 +00006#include <armnn/backends/IBackendInternal.hpp>
Matteo Martincighd0dc7702019-08-01 17:09:03 +01007
8namespace armnn
9{
10
11ARMNN_NO_DEPRECATE_WARN_BEGIN
12IBackendInternal::ISubGraphConverterPtr IBackendInternal::CreateSubGraphConverter(
Derek Lamberti901ea112019-12-10 22:07:09 +000013 const std::shared_ptr<SubGraph>& /*subGrapg*/) const
Matteo Martincighd0dc7702019-08-01 17:09:03 +010014{
15 return ISubGraphConverterPtr{};
16}
17
18IBackendInternal::Optimizations IBackendInternal::GetOptimizations() const
19{
20 return Optimizations{};
21}
22
Derek Lamberti901ea112019-12-10 22:07:09 +000023IBackendInternal::SubGraphUniquePtr IBackendInternal::OptimizeSubGraph(const SubGraph& /*subGraph*/,
Matteo Martincighd0dc7702019-08-01 17:09:03 +010024 bool& optimizationAttempted) const
25{
26 optimizationAttempted = false;
27 return nullptr;
28}
29ARMNN_NO_DEPRECATE_WARN_END
30
31IMemoryManagerUniquePtr IBackendInternal::CreateMemoryManager() const
32{
33 return IMemoryManagerUniquePtr();
34}
35
Narumol Prangnawarat11bd2612019-08-13 10:26:53 +010036IBackendInternal::IWorkloadFactoryPtr IBackendInternal::CreateWorkloadFactory(
Derek Lamberti901ea112019-12-10 22:07:09 +000037 class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const
Narumol Prangnawarat11bd2612019-08-13 10:26:53 +010038{
39 return IWorkloadFactoryPtr{};
40}
41
Matteo Martincighd0dc7702019-08-01 17:09:03 +010042IBackendInternal::IBackendContextPtr IBackendInternal::CreateBackendContext(const IRuntime::CreationOptions&) const
43{
44 return IBackendContextPtr{};
45}
46
Sadik Armagan045f6be2020-09-10 13:37:32 +010047IBackendInternal::IBackendSpecificModelContextPtr IBackendInternal::CreateBackendSpecificModelContext(
48 const ModelOptions&) const
49{
50 return IBackendSpecificModelContextPtr{};
51}
52
Colm Donelane49755b2020-01-29 15:22:43 +000053IBackendInternal::IBackendProfilingContextPtr IBackendInternal::CreateBackendProfilingContext(
Colm Donelan1aff3932020-02-05 17:48:59 +000054 const IRuntime::CreationOptions&, IBackendProfilingPtr&)
Colm Donelane49755b2020-01-29 15:22:43 +000055{
56 return IBackendProfilingContextPtr{};
57}
58
Matteo Martincighd0dc7702019-08-01 17:09:03 +010059// Default implementation of OptimizeSubgraphView for backward compatibility with the old API.
60// Override this method with a custom optimization implementation.
61OptimizationViews IBackendInternal::OptimizeSubgraphView(const SubgraphView& subgraph) const
62{
63 bool optimizationAttempted = false;
64
65 ARMNN_NO_DEPRECATE_WARN_BEGIN
66 SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted);
67 ARMNN_NO_DEPRECATE_WARN_END
68
69 OptimizationViews result;
70 if (!optimizationAttempted)
71 {
72 result.AddUntouchedSubgraph(SubgraphView(subgraph));
73 }
74 else if (optSubgraph)
75 {
76 result.AddSubstitution({subgraph, SubgraphView(*optSubgraph.get())});
77 }
78 else
79 {
80 result.AddFailedSubgraph(SubgraphView(subgraph));
81 }
82
83 return result;
84}
85
86bool IBackendInternal::SupportsTensorAllocatorAPI() const
87{
88 return !GetHandleFactoryPreferences().empty();
89}
90
91ITensorHandleFactory::FactoryId IBackendInternal::GetBackwardCompatibleFavoriteHandleFactory()
92{
93 auto favorites = GetHandleFactoryPreferences();
94 if (favorites.empty())
95 {
96 return ITensorHandleFactory::LegacyFactoryId;
97 }
98
99 return favorites[0];
100}
101
102std::vector<ITensorHandleFactory::FactoryId> IBackendInternal::GetHandleFactoryPreferences() const
103{
104 return std::vector<ITensorHandleFactory::FactoryId>();
105}
106
107} // namespace armnn