blob: e3045b2b8c1d4bc64ef9cb459a4568efe16dc56b [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"
Jim Flynnaf947722022-03-02 11:04:47 +000011#include "IProfilingService.hpp"
Jim Flynn97897022020-02-02 12:52:59 +000012
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace arm
Jim Flynn97897022020-02-02 12:52:59 +000014{
15
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000016namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000017{
18
19class RegisterBackendCounters : public IRegisterBackendCounters
20{
21public:
22
Sadik Armagan3184c902020-03-18 10:57:30 +000023 RegisterBackendCounters(
Cathal Corbett6f073722022-03-04 12:11:09 +000024 uint16_t currentMaxGlobalCounterID, const std::string& backendId, IProfilingService& profilingService)
Sadik Armagan3184c902020-03-18 10:57:30 +000025 : 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,
Jim Flynndecd08b2022-03-13 22:35:46 +000036 const arm::pipe::Optional<std::string>& parentCategoryName =
37 arm::pipe::EmptyOptional()) override;
Jim Flynn97897022020-02-02 12:52:59 +000038
39 uint16_t RegisterCounterSet(const std::string& counterSetName,
40 uint16_t count = 0,
Jim Flynndecd08b2022-03-13 22:35:46 +000041 const arm::pipe::Optional<std::string>& parentCategoryName
42 = arm::pipe::EmptyOptional()) override;
Jim Flynn97897022020-02-02 12:52:59 +000043
44 uint16_t RegisterCounter(const uint16_t uid,
45 const std::string& parentCategoryName,
46 uint16_t counterClass,
47 uint16_t interpolation,
48 double multiplier,
49 const std::string& name,
50 const std::string& description,
Jim Flynndecd08b2022-03-13 22:35:46 +000051 const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(),
52 const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(),
53 const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(),
54 const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) override;
Jim Flynn97897022020-02-02 12:52:59 +000055
56private:
57 uint16_t m_CurrentMaxGlobalCounterID;
Cathal Corbett6f073722022-03-04 12:11:09 +000058 const std::string& m_BackendId;
Jim Flynnaf947722022-03-02 11:04:47 +000059 IProfilingService& m_ProfilingService;
Sadik Armagan3184c902020-03-18 10:57:30 +000060 ICounterRegistry& m_CounterDirectory;
Jim Flynn97897022020-02-02 12:52:59 +000061};
62
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000063} // namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000064
Jim Flynnaf947722022-03-02 11:04:47 +000065} // namespace arm