blob: af988a96dce2799c3ebd6531bd05bb98287dfc4b [file] [log] [blame]
David Beck1b61be52018-11-08 09:19:14 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
Matteo Martincighe5b8eb92019-11-28 15:45:42 +00007#include <armnn/backends/IBackendContext.hpp>
David Beck1b61be52018-11-08 09:19:14 +00008#include <unordered_set>
9#include <mutex>
10
Derek Lamberti836b27b2019-11-20 10:51:57 +000011#include <arm_compute/runtime/CL/CLTuner.h>
Finn Williams40646322021-02-11 16:16:42 +000012#include <arm_compute/runtime/CL/CLGEMMHeuristicsHandle.h>
Derek Lamberti836b27b2019-11-20 10:51:57 +000013
David Beck1b61be52018-11-08 09:19:14 +000014namespace armnn
15{
16
17class ClBackendContext : public IBackendContext
18{
19public:
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 ~ClBackendContext() override;
29
30private:
31 std::mutex m_Mutex;
32 struct ClContextControlWrapper;
33 std::unique_ptr<ClContextControlWrapper> m_ClContextControlWrapper;
34
35 std::unordered_set<NetworkId> m_NetworkIds;
36
Derek Lamberti836b27b2019-11-20 10:51:57 +000037 std::unique_ptr<arm_compute::CLTuner> m_Tuner;
38 std::string m_TuningFile;
Finn Williams40646322021-02-11 16:16:42 +000039
40protected:
41 arm_compute::CLGEMMHeuristicsHandle m_MLGOTuner;
42 std::string m_MLGOTuningFile;
David Beck1b61be52018-11-08 09:19:14 +000043};
44
45} // namespace armnn