diff options
author | Derek Lamberti <derek.lamberti@arm.com> | 2020-02-04 14:49:16 +0000 |
---|---|---|
committer | James Conroy <james.conroy@arm.com> | 2020-02-05 09:19:30 +0000 |
commit | ef7e6b64a28c685c9da605a25c24a44f5f93b597 (patch) | |
tree | 25bec682e72b9f07e814ee7f2abfb1e6393b25fa | |
parent | 5e98b012597c13dc0acb048bd10a84a2a397a346 (diff) | |
download | armnn-ef7e6b64a28c685c9da605a25c24a44f5f93b597.tar.gz |
IVGCVSW-4389 Enable ClTuner in ClContextControl
Change-Id: If169736c4523a92f9aa10eac13e320eb41088624
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
-rw-r--r-- | src/backends/cl/ClBackendContext.cpp | 119 |
1 files changed, 59 insertions, 60 deletions
diff --git a/src/backends/cl/ClBackendContext.cpp b/src/backends/cl/ClBackendContext.cpp index b435c29323..bf56145885 100644 --- a/src/backends/cl/ClBackendContext.cpp +++ b/src/backends/cl/ClBackendContext.cpp @@ -136,78 +136,77 @@ ClBackendContext::ClBackendContext(const IRuntime::CreationOptions& options) auto tuningLevel = defaultTuningLevel; m_TuningFile = ""; - arm_compute::CLTuner* tuner = nullptr; - if (m_TuningFile.empty() == false) + bool useLegacyTunerAPI = options.m_GpuAccTunedParameters.get() != nullptr; + if (useLegacyTunerAPI) { - bool useLegacyTunerAPI = options.m_GpuAccTunedParameters.get() != nullptr; - if (useLegacyTunerAPI) - { - auto clTunerParams = boost::polymorphic_downcast<ClTunedParameters*>( - options.m_GpuAccTunedParameters.get()); - auto clTuner = &clTunerParams->m_Tuner; + auto clTunerParams = boost::polymorphic_downcast<ClTunedParameters*>( + options.m_GpuAccTunedParameters.get()); + auto clTuner = &clTunerParams->m_Tuner; - if (clTuner) - { - auto ConvertTuningLevel = [](IGpuAccTunedParameters::TuningLevel level) + if (clTuner) + { + auto ConvertTuningLevel = [](IGpuAccTunedParameters::TuningLevel level) + { + switch(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: { - 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; - } + BOOST_ASSERT_MSG(false, "Tuning level not recognised."); + return arm_compute::CLTunerMode::NORMAL; } - }; + } + }; - clTuner->set_tuner_mode(ConvertTuningLevel(clTunerParams->m_TuningLevel)); - clTuner->set_tune_new_kernels( - clTunerParams->m_Mode == armnn::IGpuAccTunedParameters::Mode::UpdateTunedParameters); - } + clTuner->set_tuner_mode(ConvertTuningLevel(clTunerParams->m_TuningLevel)); + clTuner->set_tune_new_kernels( + clTunerParams->m_Mode == armnn::IGpuAccTunedParameters::Mode::UpdateTunedParameters); } - else //New backend options API - { - ParseOptions(options.m_BackendOptions, "GpuAcc", [&](std::string name, const BackendOptions::Var& value) + } + else //New backend options API + { + ParseOptions(options.m_BackendOptions, "GpuAcc", [&](std::string name, const BackendOptions::Var& value) + { + if (name == "KernelProfilingEnabled") { - if (name == "KernelProfilingEnabled") - { - kernelProfiling |= ParseBoolean(value, false); - } else if (name == "TuningFile") - { - m_TuningFile = ParseFile(value, ""); - } else if (name == "TuningLevel") - { - tuningLevel = ParseTuningLevel(value, defaultTuningLevel); - } - }); + kernelProfiling |= ParseBoolean(value, false); + } else if (name == "TuningFile") + { + m_TuningFile = ParseFile(value, ""); + } else if (name == "TuningLevel") + { + tuningLevel = ParseTuningLevel(value, defaultTuningLevel); + } + }); - // Create the tuner, in tuning mode initially. - m_Tuner = std::make_unique<arm_compute::CLTuner>(true); + // Create the tuner, in tuning mode initially. + m_Tuner = std::make_unique<arm_compute::CLTuner>(true); - switch (tuningLevel) - { - case TuningLevel::Rapid: - m_Tuner->set_tuner_mode(arm_compute::CLTunerMode::RAPID); - break; - case TuningLevel::Normal: - m_Tuner->set_tuner_mode(arm_compute::CLTunerMode::NORMAL); - break; - case TuningLevel::Exhaustive: - m_Tuner->set_tuner_mode(arm_compute::CLTunerMode::EXHAUSTIVE); - break; - case TuningLevel::None: - default: - m_Tuner->set_tune_new_kernels(false); // Turn of tuning. Set to "use" only mode. - break; - } + switch (tuningLevel) + { + case TuningLevel::Rapid: + m_Tuner->set_tuner_mode(arm_compute::CLTunerMode::RAPID); + break; + case TuningLevel::Normal: + m_Tuner->set_tuner_mode(arm_compute::CLTunerMode::NORMAL); + break; + case TuningLevel::Exhaustive: + m_Tuner->set_tuner_mode(arm_compute::CLTunerMode::EXHAUSTIVE); + break; + case TuningLevel::None: + default: + m_Tuner->set_tune_new_kernels(false); // Turn of tuning. Set to "use" only mode. + break; + } + if (!m_TuningFile.empty()) + { try { m_Tuner->load_from_file(m_TuningFile.c_str()); |