blob: ad09730e339ff3763f6a24a25b8fa41e89f5a721 [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
47// Default implementation of OptimizeSubgraphView for backward compatibility with the old API.
48// Override this method with a custom optimization implementation.
49OptimizationViews IBackendInternal::OptimizeSubgraphView(const SubgraphView& subgraph) const
50{
51 bool optimizationAttempted = false;
52
53 ARMNN_NO_DEPRECATE_WARN_BEGIN
54 SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted);
55 ARMNN_NO_DEPRECATE_WARN_END
56
57 OptimizationViews result;
58 if (!optimizationAttempted)
59 {
60 result.AddUntouchedSubgraph(SubgraphView(subgraph));
61 }
62 else if (optSubgraph)
63 {
64 result.AddSubstitution({subgraph, SubgraphView(*optSubgraph.get())});
65 }
66 else
67 {
68 result.AddFailedSubgraph(SubgraphView(subgraph));
69 }
70
71 return result;
72}
73
74bool IBackendInternal::SupportsTensorAllocatorAPI() const
75{
76 return !GetHandleFactoryPreferences().empty();
77}
78
79ITensorHandleFactory::FactoryId IBackendInternal::GetBackwardCompatibleFavoriteHandleFactory()
80{
81 auto favorites = GetHandleFactoryPreferences();
82 if (favorites.empty())
83 {
84 return ITensorHandleFactory::LegacyFactoryId;
85 }
86
87 return favorites[0];
88}
89
90std::vector<ITensorHandleFactory::FactoryId> IBackendInternal::GetHandleFactoryPreferences() const
91{
92 return std::vector<ITensorHandleFactory::FactoryId>();
93}
94
95} // namespace armnn