blob: daf20150bed15b2fb10110c89cf12f8a422da8a1 [file] [log] [blame]
Sadik Armagan3c24f432020-10-19 17:35:30 +01001//
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
14namespace armnnDelegate
15{
16
17class DelegateOptions
18{
19public:
Sadik Armagan4189cc52020-11-11 18:01:48 +000020 DelegateOptions(armnn::Compute computeDevice, const std::vector<armnn::BackendOptions>& backendOptions = {});
Sadik Armagan3c24f432020-10-19 17:35:30 +010021
Sadik Armagan4189cc52020-11-11 18:01:48 +000022 DelegateOptions(const std::vector<armnn::BackendId>& backends,
23 const std::vector<armnn::BackendOptions>& backendOptions = {});
Sadik Armagan3c24f432020-10-19 17:35:30 +010024
25 const std::vector<armnn::BackendId>& GetBackends() const { return m_Backends; }
26
27 void SetBackends(const std::vector<armnn::BackendId>& backends) { m_Backends = backends; }
28
Sadik Armagan4189cc52020-11-11 18:01:48 +000029 const std::vector<armnn::BackendOptions>& GetBackendOptions() const { return m_BackendOptions; }
30
Sadik Armagan3c24f432020-10-19 17:35:30 +010031private:
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 };
Sadik Armagan4189cc52020-11-11 18:01:48 +000036
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;
Sadik Armagan3c24f432020-10-19 17:35:30 +010055};
56
57} // namespace armnnDelegate