1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include <armnn/backends/IBackendContext.hpp> 8 #include <unordered_set> 9 #include <mutex> 10 11 #include <arm_compute/runtime/CL/CLTuner.h> 12 #include <arm_compute/runtime/CL/CLGEMMHeuristicsHandle.h> 13 14 namespace armnn 15 { 16 17 class ClBackendContext : public IBackendContext 18 { 19 public: 20 ClBackendContext(const IRuntime::CreationOptions& options); 21 22 bool BeforeLoadNetwork(NetworkId networkId) override; 23 bool AfterLoadNetwork(NetworkId networkId) override; 24 25 bool BeforeUnloadNetwork(NetworkId networkId) override; 26 bool AfterUnloadNetwork(NetworkId networkId) override; 27 28 bool AfterEnqueueWorkload(NetworkId networkId) override; 29 30 ~ClBackendContext() override; 31 32 private: 33 std::mutex m_Mutex; 34 struct ClContextControlWrapper; 35 std::unique_ptr<ClContextControlWrapper> m_ClContextControlWrapper; 36 37 std::unordered_set<NetworkId> m_NetworkIds; 38 39 std::unique_ptr<arm_compute::CLTuner> m_Tuner; 40 std::string m_TuningFile; 41 42 protected: 43 arm_compute::CLGEMMHeuristicsHandle m_MLGOTuner; 44 std::string m_MLGOTuningFile; 45 }; 46 47 } // namespace armnn