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