blob: dcafe3b2261dd69612a7762701c400eab16bef62 [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#include "RegisterBackendCounters.hpp"
7
Cathal Corbett5aa9fd72022-02-25 15:33:28 +00008namespace arm
Jim Flynn97897022020-02-02 12:52:59 +00009{
10
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000011namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000012{
13
Sadik Armagan4c998992020-02-25 12:44:44 +000014void RegisterBackendCounters::RegisterCategory(const std::string& categoryName)
Jim Flynn97897022020-02-02 12:52:59 +000015{
Sadik Armagan4c998992020-02-25 12:44:44 +000016 m_CounterDirectory.RegisterCategory(categoryName);
Jim Flynn97897022020-02-02 12:52:59 +000017}
18
19uint16_t RegisterBackendCounters::RegisterDevice(const std::string& deviceName,
20 uint16_t cores,
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000021 const armnn::Optional<std::string>& parentCategoryName)
Jim Flynn97897022020-02-02 12:52:59 +000022{
23 const Device* devicePtr = m_CounterDirectory.RegisterDevice(deviceName, cores, parentCategoryName);
24 return devicePtr->m_Uid;
25}
26
27uint16_t RegisterBackendCounters::RegisterCounterSet(const std::string& counterSetName,
28 uint16_t count,
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000029 const armnn::Optional<std::string>& parentCategoryName)
Jim Flynn97897022020-02-02 12:52:59 +000030{
31 const CounterSet* counterSetPtr = m_CounterDirectory.RegisterCounterSet(counterSetName, count, parentCategoryName);
32 return counterSetPtr->m_Uid;
33}
34
35uint16_t RegisterBackendCounters::RegisterCounter(const uint16_t uid,
36 const std::string& parentCategoryName,
37 uint16_t counterClass,
38 uint16_t interpolation,
39 double multiplier,
40 const std::string& name,
41 const std::string& description,
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000042 const armnn::Optional<std::string>& units,
43 const armnn::Optional<uint16_t>& numberOfCores,
44 const armnn::Optional<uint16_t>& deviceUid,
45 const armnn::Optional<uint16_t>& counterSetUid)
Jim Flynn97897022020-02-02 12:52:59 +000046{
47 ++m_CurrentMaxGlobalCounterID;
48 const Counter* counterPtr = m_CounterDirectory.RegisterCounter(m_BackendId,
49 m_CurrentMaxGlobalCounterID,
50 parentCategoryName,
51 counterClass,
52 interpolation,
53 multiplier,
54 name,
55 description,
56 units,
57 numberOfCores,
58 deviceUid,
59 counterSetUid);
60 m_CurrentMaxGlobalCounterID = counterPtr->m_MaxCounterUid;
61 // register mappings
Sadik Armagan3184c902020-03-18 10:57:30 +000062 IRegisterCounterMapping& counterIdMap = m_ProfilingService.GetCounterMappingRegistry();
Jim Flynn97897022020-02-02 12:52:59 +000063 uint16_t globalCounterId = counterPtr->m_Uid;
64 if (globalCounterId == counterPtr->m_MaxCounterUid)
65 {
66 counterIdMap.RegisterMapping(globalCounterId, uid, m_BackendId);
67 }
68 else
69 {
70 uint16_t backendCounterId = uid;
71 while (globalCounterId <= counterPtr->m_MaxCounterUid)
72 {
73 // register mapping
74 // globalCounterId -> backendCounterId, m_BackendId
75 counterIdMap.RegisterMapping(globalCounterId, backendCounterId, m_BackendId);
76 ++globalCounterId;
77 ++backendCounterId;
78 }
79 }
80 return m_CurrentMaxGlobalCounterID;
81}
82
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000083} // namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000084
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000085} // namespace arm