blob: 3d3b11a626e3e8e88334e4b691a06ec72c92684e [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
Jim Flynn97897022020-02-02 12:52:59 +00008#include "CounterIdMap.hpp"
Jim Flynnaf947722022-03-02 11:04:47 +00009#include "IProfilingService.hpp"
Jim Flynn97897022020-02-02 12:52:59 +000010
Jim Flynnc454ac92022-03-16 18:43:18 +000011#include "armnn/backends/profiling/IBackendProfiling.hpp"
12
13#include <common/include/CounterDirectory.hpp>
14
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000015namespace arm
Jim Flynn97897022020-02-02 12:52:59 +000016{
17
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000018namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000019{
20
21class RegisterBackendCounters : public IRegisterBackendCounters
22{
23public:
24
Sadik Armagan3184c902020-03-18 10:57:30 +000025 RegisterBackendCounters(
Cathal Corbett6f073722022-03-04 12:11:09 +000026 uint16_t currentMaxGlobalCounterID, const std::string& backendId, IProfilingService& profilingService)
Sadik Armagan3184c902020-03-18 10:57:30 +000027 : m_CurrentMaxGlobalCounterID(currentMaxGlobalCounterID),
28 m_BackendId(backendId),
29 m_ProfilingService(profilingService),
30 m_CounterDirectory(m_ProfilingService.GetCounterRegistry()) {}
Jim Flynn97897022020-02-02 12:52:59 +000031
32 ~RegisterBackendCounters() = default;
33
Sadik Armagan4c998992020-02-25 12:44:44 +000034 void RegisterCategory(const std::string& categoryName) override;
Jim Flynn97897022020-02-02 12:52:59 +000035
36 uint16_t RegisterDevice(const std::string& deviceName,
37 uint16_t cores = 0,
Jim Flynndecd08b2022-03-13 22:35:46 +000038 const arm::pipe::Optional<std::string>& parentCategoryName =
39 arm::pipe::EmptyOptional()) override;
Jim Flynn97897022020-02-02 12:52:59 +000040
41 uint16_t RegisterCounterSet(const std::string& counterSetName,
42 uint16_t count = 0,
Jim Flynndecd08b2022-03-13 22:35:46 +000043 const arm::pipe::Optional<std::string>& parentCategoryName
44 = arm::pipe::EmptyOptional()) override;
Jim Flynn97897022020-02-02 12:52:59 +000045
46 uint16_t RegisterCounter(const uint16_t uid,
47 const std::string& parentCategoryName,
48 uint16_t counterClass,
49 uint16_t interpolation,
50 double multiplier,
51 const std::string& name,
52 const std::string& description,
Jim Flynndecd08b2022-03-13 22:35:46 +000053 const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(),
54 const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(),
55 const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(),
56 const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) override;
Jim Flynn97897022020-02-02 12:52:59 +000057
58private:
59 uint16_t m_CurrentMaxGlobalCounterID;
Cathal Corbett6f073722022-03-04 12:11:09 +000060 const std::string& m_BackendId;
Jim Flynnaf947722022-03-02 11:04:47 +000061 IProfilingService& m_ProfilingService;
Sadik Armagan3184c902020-03-18 10:57:30 +000062 ICounterRegistry& m_CounterDirectory;
Jim Flynn97897022020-02-02 12:52:59 +000063};
64
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000065} // namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000066
Jim Flynnaf947722022-03-02 11:04:47 +000067} // namespace arm