diff options
author | Ruomei Yan <ruomei.yan@arm.com> | 2019-04-25 14:24:05 +0100 |
---|---|---|
committer | Ruomei Yan <ruomei.yan@arm.com> | 2019-04-30 14:56:04 +0100 |
commit | 49937f3da53c78a5fdd8fdfbd007993572d5f926 (patch) | |
tree | 3885c78a9f66073bbced3b97f5c08f3870760819 /src/backends/cl/ClContextControl.cpp | |
parent | d78b891d30b9b3a1aaf29e46c1d008bdc6bcd674 (diff) | |
download | armnn-49937f3da53c78a5fdd8fdfbd007993572d5f926.tar.gz |
IVGCVSW-2773 Integrate new CL tuner into ArmNN
!android-nn-driver:1038
Change-Id: Ia94743a64109b5eddcd44b03cf6ba5b3a4de4e53
Signed-off-by: Ruomei Yan <ruomei.yan@arm.com>
Diffstat (limited to 'src/backends/cl/ClContextControl.cpp')
-rw-r--r-- | src/backends/cl/ClContextControl.cpp | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/src/backends/cl/ClContextControl.cpp b/src/backends/cl/ClContextControl.cpp index ac0b8c8572..268430ec6b 100644 --- a/src/backends/cl/ClContextControl.cpp +++ b/src/backends/cl/ClContextControl.cpp @@ -162,6 +162,27 @@ void ClContextControl::DoLoadOpenClRuntime(bool useTunedParameters) if (useTunedParameters && m_clTunedParameters) { tuner = &m_clTunedParameters->m_Tuner; + auto clTuner = boost::polymorphic_downcast<arm_compute::CLTuner*>(tuner); + + auto ConvertTuningLevel = [](IGpuAccTunedParameters::TuningLevel level) + { + switch(level) + { + case IGpuAccTunedParameters::TuningLevel::Rapid: + return arm_compute::CLTunerMode::RAPID; + case IGpuAccTunedParameters::TuningLevel::Normal: + return arm_compute::CLTunerMode::NORMAL; + case IGpuAccTunedParameters::TuningLevel::Exhaustive: + return arm_compute::CLTunerMode::EXHAUSTIVE; + default: + { + BOOST_ASSERT_MSG(false, "Tuning level not recognised."); + return arm_compute::CLTunerMode::NORMAL; + } + } + }; + + clTuner->set_tuner_mode(ConvertTuningLevel(m_clTunedParameters->m_TuningLevel)); } arm_compute::CLScheduler::get().init(context, commandQueue, device, tuner); } @@ -171,14 +192,16 @@ void ClContextControl::ClearClCache() DoLoadOpenClRuntime(true); } -armnn::IGpuAccTunedParameters* IGpuAccTunedParameters::CreateRaw(armnn::IGpuAccTunedParameters::Mode mode) +armnn::IGpuAccTunedParameters* IGpuAccTunedParameters::CreateRaw(armnn::IGpuAccTunedParameters::Mode mode, + armnn::IGpuAccTunedParameters::TuningLevel tuningLevel) { - return new ClTunedParameters(mode); + return new ClTunedParameters(mode, tuningLevel); } -armnn::IGpuAccTunedParametersPtr IGpuAccTunedParameters::Create(armnn::IGpuAccTunedParameters::Mode mode) +armnn::IGpuAccTunedParametersPtr IGpuAccTunedParameters::Create(armnn::IGpuAccTunedParameters::Mode mode, + armnn::IGpuAccTunedParameters::TuningLevel tuningLevel) { - return IGpuAccTunedParametersPtr(CreateRaw(mode), &IGpuAccTunedParameters::Destroy); + return IGpuAccTunedParametersPtr(CreateRaw(mode, tuningLevel), &IGpuAccTunedParameters::Destroy); } void IGpuAccTunedParameters::Destroy(IGpuAccTunedParameters* params) @@ -186,8 +209,10 @@ void IGpuAccTunedParameters::Destroy(IGpuAccTunedParameters* params) delete params; } -ClTunedParameters::ClTunedParameters(armnn::IGpuAccTunedParameters::Mode mode) +ClTunedParameters::ClTunedParameters(armnn::IGpuAccTunedParameters::Mode mode, + armnn::IGpuAccTunedParameters::TuningLevel tuningLevel) : m_Mode(mode) + , m_TuningLevel(ClTunedParameters::TuningLevel::Rapid) , m_Tuner(mode == ClTunedParameters::Mode::UpdateTunedParameters) { } |