1 // 2 // Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include <aclCommon/ArmComputeTuningUtils.hpp> 8 9 namespace armnn 10 { 11 12 // ARM Compute OpenCL context control. 13 class ClContextControl 14 { 15 public: 16 17 ClContextControl(arm_compute::CLTuner* = nullptr, 18 arm_compute::CLGEMMHeuristicsHandle* = nullptr, 19 bool profilingEnabled = false); 20 21 virtual ~ClContextControl(); 22 23 void LoadOpenClRuntime(); 24 25 // Users should call this (after freeing all of the cl::Context objects they use) 26 // to release the cached memory used by the compute library. 27 void UnloadOpenClRuntime(); 28 29 // Clear the CL cache, without losing the tuned parameter settings. 30 void ClearClCache(); 31 32 private: 33 34 void DoLoadOpenClRuntime(bool updateTunedParameters); 35 36 arm_compute::CLTuner* m_Tuner; 37 arm_compute::CLGEMMHeuristicsHandle* m_HeuristicsHandle; 38 39 bool m_ProfilingEnabled; 40 }; 41 42 } // namespace armnn 43