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