1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include "ArmComputeTuningUtils.hpp"
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Worker namespace armnn
9*89c4ff92SAndroid Build Coastguard Worker {
10*89c4ff92SAndroid Build Coastguard Worker
CreateRaw(IGpuAccTunedParameters::Mode mode,IGpuAccTunedParameters::TuningLevel tuningLevel)11*89c4ff92SAndroid Build Coastguard Worker IGpuAccTunedParameters* IGpuAccTunedParameters::CreateRaw(IGpuAccTunedParameters::Mode mode,
12*89c4ff92SAndroid Build Coastguard Worker IGpuAccTunedParameters::TuningLevel tuningLevel)
13*89c4ff92SAndroid Build Coastguard Worker {
14*89c4ff92SAndroid Build Coastguard Worker return new ClTunedParameters(mode, tuningLevel);
15*89c4ff92SAndroid Build Coastguard Worker }
16*89c4ff92SAndroid Build Coastguard Worker
Create(IGpuAccTunedParameters::Mode mode,IGpuAccTunedParameters::TuningLevel tuningLevel)17*89c4ff92SAndroid Build Coastguard Worker IGpuAccTunedParametersPtr IGpuAccTunedParameters::Create(IGpuAccTunedParameters::Mode mode,
18*89c4ff92SAndroid Build Coastguard Worker IGpuAccTunedParameters::TuningLevel tuningLevel)
19*89c4ff92SAndroid Build Coastguard Worker {
20*89c4ff92SAndroid Build Coastguard Worker return IGpuAccTunedParametersPtr(CreateRaw(mode, tuningLevel), &IGpuAccTunedParameters::Destroy);
21*89c4ff92SAndroid Build Coastguard Worker }
22*89c4ff92SAndroid Build Coastguard Worker
Destroy(IGpuAccTunedParameters * params)23*89c4ff92SAndroid Build Coastguard Worker void IGpuAccTunedParameters::Destroy(IGpuAccTunedParameters* params)
24*89c4ff92SAndroid Build Coastguard Worker {
25*89c4ff92SAndroid Build Coastguard Worker delete params;
26*89c4ff92SAndroid Build Coastguard Worker }
27*89c4ff92SAndroid Build Coastguard Worker
ClTunedParameters(IGpuAccTunedParameters::Mode mode,IGpuAccTunedParameters::TuningLevel tuningLevel)28*89c4ff92SAndroid Build Coastguard Worker ClTunedParameters::ClTunedParameters(IGpuAccTunedParameters::Mode mode,
29*89c4ff92SAndroid Build Coastguard Worker IGpuAccTunedParameters::TuningLevel tuningLevel)
30*89c4ff92SAndroid Build Coastguard Worker : m_Mode(mode)
31*89c4ff92SAndroid Build Coastguard Worker , m_TuningLevel(tuningLevel)
32*89c4ff92SAndroid Build Coastguard Worker , m_Tuner(mode == ClTunedParameters::Mode::UpdateTunedParameters)
33*89c4ff92SAndroid Build Coastguard Worker {
34*89c4ff92SAndroid Build Coastguard Worker }
35*89c4ff92SAndroid Build Coastguard Worker
Load(const char * filename)36*89c4ff92SAndroid Build Coastguard Worker void ClTunedParameters::Load(const char* filename)
37*89c4ff92SAndroid Build Coastguard Worker {
38*89c4ff92SAndroid Build Coastguard Worker try
39*89c4ff92SAndroid Build Coastguard Worker {
40*89c4ff92SAndroid Build Coastguard Worker m_Tuner.load_from_file(filename);
41*89c4ff92SAndroid Build Coastguard Worker }
42*89c4ff92SAndroid Build Coastguard Worker catch (const std::exception& e)
43*89c4ff92SAndroid Build Coastguard Worker {
44*89c4ff92SAndroid Build Coastguard Worker throw Exception(std::string("Failed to load tuned parameters file '") + filename + "': " + e.what());
45*89c4ff92SAndroid Build Coastguard Worker }
46*89c4ff92SAndroid Build Coastguard Worker }
47*89c4ff92SAndroid Build Coastguard Worker
Save(const char * filename) const48*89c4ff92SAndroid Build Coastguard Worker void ClTunedParameters::Save(const char* filename) const
49*89c4ff92SAndroid Build Coastguard Worker {
50*89c4ff92SAndroid Build Coastguard Worker try
51*89c4ff92SAndroid Build Coastguard Worker {
52*89c4ff92SAndroid Build Coastguard Worker m_Tuner.save_to_file(filename);
53*89c4ff92SAndroid Build Coastguard Worker }
54*89c4ff92SAndroid Build Coastguard Worker catch (const std::exception& e)
55*89c4ff92SAndroid Build Coastguard Worker {
56*89c4ff92SAndroid Build Coastguard Worker throw Exception(std::string("Failed to save tuned parameters file to '") + filename + "': " + e.what());
57*89c4ff92SAndroid Build Coastguard Worker }
58*89c4ff92SAndroid Build Coastguard Worker }
59*89c4ff92SAndroid Build Coastguard Worker
60*89c4ff92SAndroid Build Coastguard Worker }