blob: 41886c04443431096557327a625372a1bce17e5e [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
23 RegisterBackendCounters(uint16_t currentMaxGlobalCounterID, const BackendId& backendId)
24 : m_CurrentMaxGlobalCounterID(currentMaxGlobalCounterID),
25 m_CounterDirectory(ProfilingService::Instance().GetCounterRegistry()),
26 m_BackendId(backendId) {}
27
28 ~RegisterBackendCounters() = default;
29
30 void RegisterCategory(const std::string& categoryName,
31 const Optional<uint16_t>& deviceUid = EmptyOptional(),
32 const Optional<uint16_t>& counterSetUid = EmptyOptional()) override;
33
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;
56 ICounterRegistry& m_CounterDirectory;
57 const BackendId& m_BackendId;
58};
59
60} // namespace profiling
61
62} // namespace armnn