• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include <armnn/ArmNN.hpp>
9 
10 #include <set>
11 #include <string>
12 #include <vector>
13 
14 namespace armnnDelegate
15 {
16 
17 class DelegateOptions
18 {
19 public:
20     DelegateOptions(armnn::Compute computeDevice, const std::vector<armnn::BackendOptions>& backendOptions = {});
21 
22     DelegateOptions(const std::vector<armnn::BackendId>& backends,
23                     const std::vector<armnn::BackendOptions>& backendOptions = {});
24 
GetBackends() const25     const std::vector<armnn::BackendId>& GetBackends() const { return m_Backends; }
26 
SetBackends(const std::vector<armnn::BackendId> & backends)27     void SetBackends(const std::vector<armnn::BackendId>& backends) { m_Backends = backends; }
28 
GetBackendOptions() const29     const std::vector<armnn::BackendOptions>& GetBackendOptions() const { return m_BackendOptions; }
30 
31 private:
32     /// Which backend to run Delegate on.
33     /// Examples of possible values are: CpuRef, CpuAcc, GpuAcc.
34     /// CpuRef as default.
35     std::vector<armnn::BackendId> m_Backends = { armnn::Compute::CpuRef };
36 
37     /// Pass backend specific options to Delegate
38     ///
39     /// For example, tuning can be enabled on GpuAcc like below
40     /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41     /// m_BackendOptions.emplace_back(
42     ///     BackendOptions{"GpuAcc",
43     ///       {
44     ///         {"TuningLevel", 2},
45     ///         {"TuningFile", filename}
46     ///       }
47     ///     });
48     /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49     /// The following backend options are available:
50     /// GpuAcc:
51     ///   "TuningLevel" : int [0..3] (0=UseOnly(default) | 1=RapidTuning | 2=NormalTuning | 3=ExhaustiveTuning)
52     ///   "TuningFile" : string [filenameString]
53     ///   "KernelProfilingEnabled" : bool [true | false]
54     std::vector<armnn::BackendOptions> m_BackendOptions;
55 };
56 
57 } // namespace armnnDelegate
58