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