blob: bcac0d245e9f1d11837b7d74f28f03be4853e85b [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>
12
David Beck1b61be52018-11-08 09:19:14 +000013namespace armnn
14{
15
16class ClBackendContext : public IBackendContext
17{
18public:
19 ClBackendContext(const IRuntime::CreationOptions& options);
20
21 bool BeforeLoadNetwork(NetworkId networkId) override;
22 bool AfterLoadNetwork(NetworkId networkId) override;
23
24 bool BeforeUnloadNetwork(NetworkId networkId) override;
25 bool AfterUnloadNetwork(NetworkId networkId) override;
26
27 ~ClBackendContext() override;
28
29private:
30 std::mutex m_Mutex;
31 struct ClContextControlWrapper;
32 std::unique_ptr<ClContextControlWrapper> m_ClContextControlWrapper;
33
34 std::unordered_set<NetworkId> m_NetworkIds;
35
Derek Lamberti836b27b2019-11-20 10:51:57 +000036 std::unique_ptr<arm_compute::CLTuner> m_Tuner;
37 std::string m_TuningFile;
David Beck1b61be52018-11-08 09:19:14 +000038};
39
40} // namespace armnn