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