ArmNN
 20.02
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_EventCount;
110  std::string m_CategoryName;
111  std::vector<EventRecord> m_EventRecords;
112 
113  void print() const
114  {
115  std::string body;
116  std::string header;
117 
118  header.append(gatordmock::CentreAlignFormatting("Name", 20));
119  header.append(" | ");
120  header.append(gatordmock::CentreAlignFormatting("Event Count", 14));
121  header.append("\n");
122 
123  body.append(gatordmock::CentreAlignFormatting(m_CategoryName, 20));
124  body.append(" | ");
125  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_EventCount), 14));
126 
127  std::cout << "\n" << "\n";
128  std::cout << gatordmock::CentreAlignFormatting("CATEGORY", static_cast<int>(header.size()));
129  std::cout << "\n";
130  std::cout << std::string(header.size(), '=') << "\n";
131 
132  std::cout<< header;
133 
134  std::cout << std::string(body.size(), '-') << "\n";
135 
136  std::cout<< body;
137 
138  if(m_EventRecords.size() > 0)
139  {
140  EventRecord::printHeader(m_CategoryName);
141 
142  std::for_each(m_EventRecords.begin(), m_EventRecords.end(), std::mem_fun_ref(&EventRecord::printContents));
143  }
144  }
145 };
146 
148 {
149  uint16_t m_CounterSetUid;
151  std::string m_CounterSetName;
152 
153  static void printHeader()
154  {
155  std::string header;
156 
157  header.append(gatordmock::CentreAlignFormatting("Counter set name", 20));
158  header.append(" | ");
159  header.append(gatordmock::CentreAlignFormatting("UID",13));
160  header.append(" | ");
161  header.append(gatordmock::CentreAlignFormatting("Count",10));
162  header.append("\n");
163 
164  std::cout << "\n" << "\n";
165  std::cout << gatordmock::CentreAlignFormatting("COUNTER SETS", static_cast<int>(header.size()));
166  std::cout << "\n";
167  std::cout << std::string(header.size(), '=') << "\n";
168 
169  std::cout<< header;
170  }
171 
172  void printContents() const
173  {
174  std::string body;
175 
176  body.append(gatordmock::CentreAlignFormatting(m_CounterSetName, 20));
177  body.append(" | ");
178  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetUid), 13));
179  body.append(" | ");
180  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetCount), 10));
181  body.append("\n");
182 
183  std::cout << std::string(body.size(), '-') << "\n";
184 
185  std::cout<< body;
186  }
187 };
188 
190 {
191  uint16_t m_DeviceUid;
192  uint16_t m_DeviceCores;
193  std::string m_DeviceName;
194 
195  static void printHeader()
196  {
197  std::string header;
198 
199  header.append(gatordmock::CentreAlignFormatting("Device name", 20));
200  header.append(" | ");
201  header.append(gatordmock::CentreAlignFormatting("UID",13));
202  header.append(" | ");
203  header.append(gatordmock::CentreAlignFormatting("Cores",10));
204  header.append("\n");
205 
206  std::cout << "\n" << "\n";
207  std::cout << gatordmock::CentreAlignFormatting("DEVICES", static_cast<int>(header.size()));
208  std::cout << "\n";
209  std::cout << std::string(header.size(), '=') << "\n";
210  std::cout<< header;
211  }
212 
213  void printContents() const
214  {
215  std::string body;
216 
217  body.append(gatordmock::CentreAlignFormatting(m_DeviceName, 20));
218  body.append(" | ");
219  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceUid), 13));
220  body.append(" | ");
221  body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceCores), 10));
222  body.append("\n");
223 
224  std::cout << std::string(body.size(), '-') << "\n";
225  std::cout<< body;
226  }
227 };
228 
230 {
231  std::vector<CategoryRecord> m_Categories;
232  std::vector<CounterSetRecord> m_CounterSets;
233  std::vector<DeviceRecord> m_DeviceRecords;
234 
235  void print() const
236  {
238  std::for_each(m_DeviceRecords.begin(), m_DeviceRecords.end(),
239  std::mem_fun_ref(&DeviceRecord::printContents));
240 
242  std::for_each(m_CounterSets.begin(), m_CounterSets.end(),
243  std::mem_fun_ref(&CounterSetRecord::printContents));
244 
245  std::for_each(m_Categories.begin(), m_Categories.end(),
246  std::mem_fun_ref(&CategoryRecord::print));
247  std::cout << "\n";
248  }
249 };
250 
251 } // namespace gatordmock
252 
253 } // namespace armnn
static void printHeader(std::string categoryName)
std::vector< EventRecord > m_EventRecords
Copyright (c) 2020 ARM Limited.
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