• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "armnn/BackendId.hpp"
8 #include <map>
9 
10 namespace armnn
11 {
12 namespace profiling
13 {
14 
15 class ICounterMappings
16 {
17 public:
18     virtual uint16_t GetGlobalId(uint16_t backendCounterId, const armnn::BackendId& backendId) const = 0;
19     virtual const std::pair<uint16_t, armnn::BackendId>& GetBackendId(uint16_t globalCounterId) const = 0;
~ICounterMappings()20     virtual ~ICounterMappings() {}
21 };
22 
23 class IRegisterCounterMapping
24 {
25 public:
26     virtual void RegisterMapping(uint16_t globalCounterId,
27                                  uint16_t backendCounterId,
28                                  const armnn::BackendId& backendId) = 0;
29     virtual void Reset() = 0;
~IRegisterCounterMapping()30     virtual ~IRegisterCounterMapping() {}
31 };
32 
33 class CounterIdMap : public ICounterMappings, public IRegisterCounterMapping
34 {
35 
36 public:
37     CounterIdMap() = default;
~CounterIdMap()38     virtual ~CounterIdMap() {}
39     void RegisterMapping(uint16_t globalCounterId,
40                          uint16_t backendCounterId,
41                          const armnn::BackendId& backendId) override;
42     void Reset() override;
43     uint16_t GetGlobalId(uint16_t backendCounterId, const armnn::BackendId& backendId) const override;
44     const std::pair<uint16_t, armnn::BackendId>& GetBackendId(uint16_t globalCounterId) const override;
45 private:
46     std::map<uint16_t, std::pair<uint16_t, armnn::BackendId>> m_GlobalCounterIdMap;
47     std::map<std::pair<uint16_t, armnn::BackendId>, uint16_t> m_BackendCounterIdMap;
48 };
49 
50 }    // namespace profiling
51 }    // namespace armnn
52