blob: f81f487472d170a98b8e37dcc61e91acbf19317c [file] [log] [blame]
Jim Flynn97897022020-02-02 12:52:59 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "armnn/backends/profiling/IBackendProfiling.hpp"
9#include "CounterIdMap.hpp"
10#include "CounterDirectory.hpp"
11#include "ProfilingService.hpp"
12
13namespace armnn
14{
15
16namespace profiling
17{
18
19class RegisterBackendCounters : public IRegisterBackendCounters
20{
21public:
22
Sadik Armagan3184c902020-03-18 10:57:30 +000023 RegisterBackendCounters(
24 uint16_t currentMaxGlobalCounterID, const BackendId& backendId, ProfilingService& profilingService)
25 : m_CurrentMaxGlobalCounterID(currentMaxGlobalCounterID),
26 m_BackendId(backendId),
27 m_ProfilingService(profilingService),
28 m_CounterDirectory(m_ProfilingService.GetCounterRegistry()) {}
Jim Flynn97897022020-02-02 12:52:59 +000029
30 ~RegisterBackendCounters() = default;
31
Sadik Armagan4c998992020-02-25 12:44:44 +000032 void RegisterCategory(const std::string& categoryName) override;
Jim Flynn97897022020-02-02 12:52:59 +000033
34 uint16_t RegisterDevice(const std::string& deviceName,
35 uint16_t cores = 0,
36 const Optional<std::string>& parentCategoryName = EmptyOptional()) override;
37
38 uint16_t RegisterCounterSet(const std::string& counterSetName,
39 uint16_t count = 0,
40 const Optional<std::string>& parentCategoryName = EmptyOptional()) override;
41
42 uint16_t RegisterCounter(const uint16_t uid,
43 const std::string& parentCategoryName,
44 uint16_t counterClass,
45 uint16_t interpolation,
46 double multiplier,
47 const std::string& name,
48 const std::string& description,
49 const Optional<std::string>& units = EmptyOptional(),
50 const Optional<uint16_t>& numberOfCores = EmptyOptional(),
51 const Optional<uint16_t>& deviceUid = EmptyOptional(),
52 const Optional<uint16_t>& counterSetUid = EmptyOptional()) override;
53
54private:
55 uint16_t m_CurrentMaxGlobalCounterID;
Jim Flynn97897022020-02-02 12:52:59 +000056 const BackendId& m_BackendId;
Sadik Armagan3184c902020-03-18 10:57:30 +000057 ProfilingService& m_ProfilingService;
58 ICounterRegistry& m_CounterDirectory;
Jim Flynn97897022020-02-02 12:52:59 +000059};
60
61} // namespace profiling
62
63} // namespace armnn