xref: /aosp_15_r20/external/armnn/src/backends/cl/ClBackendContext.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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