ArmNN
 21.05
CounterDirectory.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 
9 #include "GatordMockService.hpp"
10 #include "MockUtils.hpp"
11 
12 #include <common/include/Packet.hpp>
13 #include <common/include/CommandHandlerFunctor.hpp>
14 
15 #include "SendCounterPacket.hpp"
17 
18 #include <vector>
19 #include <thread>
20 #include <atomic>
21 #include <iostream>
22 #include <functional>
23 
24 namespace armnn
25 {
26 
27 namespace gatordmock
28 {
29 
31 {
32  uint16_t m_CounterUid;
33  uint16_t m_MaxCounterUid;
34  uint16_t m_DeviceUid;
35  uint16_t m_CounterSetUid;
36  uint16_t m_CounterClass;
39  std::string m_CounterName;
40  std::string m_CounterDescription;
41  std::string m_CounterUnits;
42 
43  static void printHeader(std::string categoryName)
44  {
45  std::string header;
46 
47  header.append(gatordmock::CentreAlignFormatting("Counter Name", 20));
48  header.append(" | ");
49  header.append(gatordmock::CentreAlignFormatting("Description", 50));
50  header.append(" | ");
51  header.append(gatordmock::CentreAlignFormatting("Units", 14));
52  header.append(" | ");
53  header.append(gatordmock::CentreAlignFormatting("UID", 6));
54  header.append(" | ");
55  header.append(gatordmock::CentreAlignFormatting("Max UID",10));
56  header.append(" | ");
57  header.append(gatordmock::CentreAlignFormatting("Class", 8));
58  header.append(" | ");
59  header.append(gatordmock::CentreAlignFormatting("Interpolation", 14));
60  header.append(" | ");
61  header.append(gatordmock::CentreAlignFormatting("Multiplier", 20));
62  header.append(" | ");
63  header.append(gatordmock::CentreAlignFormatting("Counter set UID", 16));
64  header.append(" | ");
65  header.append(gatordmock::CentreAlignFormatting("Device UID", 14));
66  header.append("\n");
67 
68  std::cout << "\n" << "\n";
69  std::cout << gatordmock::CentreAlignFormatting("EVENTS IN CATEGORY: " + categoryName,
70  static_cast<int>(header.size()));
71  std::cout << "\n";
72  std::cout << std::string(header.size(), '=') << "\n";
73  std::cout << header;
74  }
75 
76  void printContents() const
77  {
78  std::string body;
79 
80  body.append(gatordmock::CentreAlignFormatting(m_CounterName, 20));
81  body.append(" | ");
82  body.append(gatordmock::CentreAlignFormatting(m_CounterDescription, 50));
83  body.append(" | ");
84  body.append(gatordmock::CentreAlignFormatting(m_CounterUnits, 14));
85  body.append(" | ");
86  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterUid), 6));
87  body.append(" | ");
88  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_MaxCounterUid), 10));
89  body.append(" | ");
90  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterClass), 8));
91  body.append(" | ");
92  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterInterpolation), 14));
93  body.append(" | ");
94  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterMultiplier), 20));
95  body.append(" | ");
96  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetUid), 16));
97  body.append(" | ");
98  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceUid), 14));
99 
100  body.append("\n");
101 
102  std::cout << std::string(body.size(), '-') << "\n";
103 
104  std::cout << body;
105  }
106 };
107 
109 {
110  uint16_t m_EventCount;
111  std::string m_CategoryName;
112  std::vector<EventRecord> m_EventRecords;
113 
114  void print() const
115  {
116  std::string body;
117  std::string header;
118 
119  header.append(gatordmock::CentreAlignFormatting("Name", 20));
120  header.append(" | ");
121  header.append(gatordmock::CentreAlignFormatting("Event Count", 14));
122  header.append("\n");
123 
124  body.append(gatordmock::CentreAlignFormatting(m_CategoryName, 20));
125  body.append(" | ");
126  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_EventCount), 14));
127 
128  std::cout << "\n" << "\n";
129  std::cout << gatordmock::CentreAlignFormatting("CATEGORY", static_cast<int>(header.size()));
130  std::cout << "\n";
131  std::cout << std::string(header.size(), '=') << "\n";
132 
133  std::cout<< header;
134 
135  std::cout << std::string(body.size(), '-') << "\n";
136 
137  std::cout<< body;
138 
139  if(m_EventRecords.size() > 0)
140  {
141  EventRecord::printHeader(m_CategoryName);
142 
143  std::for_each(m_EventRecords.begin(), m_EventRecords.end(), std::mem_fun_ref(&EventRecord::printContents));
144  }
145  }
146 };
147 
149 {
150  uint16_t m_CounterSetUid;
152  std::string m_CounterSetName;
153 
154  static void printHeader()
155  {
156  std::string header;
157 
158  header.append(gatordmock::CentreAlignFormatting("Counter set name", 20));
159  header.append(" | ");
160  header.append(gatordmock::CentreAlignFormatting("UID",13));
161  header.append(" | ");
162  header.append(gatordmock::CentreAlignFormatting("Count",10));
163  header.append("\n");
164 
165  std::cout << "\n" << "\n";
166  std::cout << gatordmock::CentreAlignFormatting("COUNTER SETS", static_cast<int>(header.size()));
167  std::cout << "\n";
168  std::cout << std::string(header.size(), '=') << "\n";
169 
170  std::cout<< header;
171  }
172 
173  void printContents() const
174  {
175  std::string body;
176 
177  body.append(gatordmock::CentreAlignFormatting(m_CounterSetName, 20));
178  body.append(" | ");
179  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetUid), 13));
180  body.append(" | ");
181  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetCount), 10));
182  body.append("\n");
183 
184  std::cout << std::string(body.size(), '-') << "\n";
185 
186  std::cout<< body;
187  }
188 };
189 
191 {
192  uint16_t m_DeviceUid;
193  uint16_t m_DeviceCores;
194  std::string m_DeviceName;
195 
196  static void printHeader()
197  {
198  std::string header;
199 
200  header.append(gatordmock::CentreAlignFormatting("Device name", 20));
201  header.append(" | ");
202  header.append(gatordmock::CentreAlignFormatting("UID",13));
203  header.append(" | ");
204  header.append(gatordmock::CentreAlignFormatting("Cores",10));
205  header.append("\n");
206 
207  std::cout << "\n" << "\n";
208  std::cout << gatordmock::CentreAlignFormatting("DEVICES", static_cast<int>(header.size()));
209  std::cout << "\n";
210  std::cout << std::string(header.size(), '=') << "\n";
211  std::cout<< header;
212  }
213 
214  void printContents() const
215  {
216  std::string body;
217 
218  body.append(gatordmock::CentreAlignFormatting(m_DeviceName, 20));
219  body.append(" | ");
220  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceUid), 13));
221  body.append(" | ");
222  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceCores), 10));
223  body.append("\n");
224 
225  std::cout << std::string(body.size(), '-') << "\n";
226  std::cout<< body;
227  }
228 };
229 
231 {
232  std::vector<CategoryRecord> m_Categories;
233  std::vector<CounterSetRecord> m_CounterSets;
234  std::vector<DeviceRecord> m_DeviceRecords;
235 
236  void print() const
237  {
239  std::for_each(m_DeviceRecords.begin(), m_DeviceRecords.end(),
240  std::mem_fun_ref(&DeviceRecord::printContents));
241 
243  std::for_each(m_CounterSets.begin(), m_CounterSets.end(),
244  std::mem_fun_ref(&CounterSetRecord::printContents));
245 
246  std::for_each(m_Categories.begin(), m_Categories.end(),
247  std::mem_fun_ref(&CategoryRecord::print));
248  std::cout << "\n";
249  }
250 };
251 
252 } // namespace gatordmock
253 
254 } // namespace armnn
static void printHeader(std::string categoryName)
std::vector< EventRecord > m_EventRecords
Copyright (c) 2021 ARM Limited and Contributors.
std::vector< CounterSetRecord > m_CounterSets
std::string CentreAlignFormatting(const std::string &stringToPass, const int spacingWidth)
std::vector< CategoryRecord > m_Categories
std::vector< DeviceRecord > m_DeviceRecords