blob: a9d5a5493ddee9805d01976b7984124b89808f67 [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
Colm Donelane49755b2020-01-29 15:22:43 +000047IBackendInternal::IBackendProfilingContextPtr IBackendInternal::CreateBackendProfilingContext(
Colm Donelan1aff3932020-02-05 17:48:59 +000048 const IRuntime::CreationOptions&, IBackendProfilingPtr&)
Colm Donelane49755b2020-01-29 15:22:43 +000049{
50 return IBackendProfilingContextPtr{};
51}
52
Matteo Martincighd0dc7702019-08-01 17:09:03 +010053// Default implementation of OptimizeSubgraphView for backward compatibility with the old API.
54// Override this method with a custom optimization implementation.
55OptimizationViews IBackendInternal::OptimizeSubgraphView(const SubgraphView& subgraph) const
56{
57 bool optimizationAttempted = false;
58
59 ARMNN_NO_DEPRECATE_WARN_BEGIN
60 SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted);
61 ARMNN_NO_DEPRECATE_WARN_END
62
63 OptimizationViews result;
64 if (!optimizationAttempted)
65 {
66 result.AddUntouchedSubgraph(SubgraphView(subgraph));
67 }
68 else if (optSubgraph)
69 {
70 result.AddSubstitution({subgraph, SubgraphView(*optSubgraph.get())});
71 }
72 else
73 {
74 result.AddFailedSubgraph(SubgraphView(subgraph));
75 }
76
77 return result;
78}
79
80bool IBackendInternal::SupportsTensorAllocatorAPI() const
81{
82 return !GetHandleFactoryPreferences().empty();
83}
84
85ITensorHandleFactory::FactoryId IBackendInternal::GetBackwardCompatibleFavoriteHandleFactory()
86{
87 auto favorites = GetHandleFactoryPreferences();
88 if (favorites.empty())
89 {
90 return ITensorHandleFactory::LegacyFactoryId;
91 }
92
93 return favorites[0];
94}
95
96std::vector<ITensorHandleFactory::FactoryId> IBackendInternal::GetHandleFactoryPreferences() const
97{
98 return std::vector<ITensorHandleFactory::FactoryId>();
99}
100
101} // namespace armnn