blob: 659d47b7c28005a89eb1d0d9c903db6df9ebd280 [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
Narumol Prangnawaratec5463d2022-02-04 17:50:20 +000028 bool AfterEnqueueWorkload(NetworkId networkId) override;
29
David Beck1b61be52018-11-08 09:19:14 +000030 ~ClBackendContext() override;
31
32private:
33 std::mutex m_Mutex;
34 struct ClContextControlWrapper;
TeresaARM8b4a4832022-12-20 16:28:22 +000035 std::unique_ptr<ClContextControlWrapper> m_ClContextControlWrapper;
David Beck1b61be52018-11-08 09:19:14 +000036
37 std::unordered_set<NetworkId> m_NetworkIds;
38
Derek Lamberti836b27b2019-11-20 10:51:57 +000039 std::unique_ptr<arm_compute::CLTuner> m_Tuner;
40 std::string m_TuningFile;
Finn Williams40646322021-02-11 16:16:42 +000041
42protected:
43 arm_compute::CLGEMMHeuristicsHandle m_MLGOTuner;
44 std::string m_MLGOTuningFile;
David Beck1b61be52018-11-08 09:19:14 +000045};
46
47} // namespace armnn