ArmNN  NotReleased
IBackendProfiling.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include <armnn/IRuntime.hpp>
10 #include <memory>
11 #include <vector>
12 
13 namespace armnn
14 {
15 
16 namespace profiling
17 {
18 
20 {
21  CounterValue(uint16_t id, uint32_t value) :
22  counterId(id), counterValue(value) {}
23  uint16_t counterId;
24  uint32_t counterValue;
25 };
26 
27 struct Timestamp
28 {
29  uint64_t timestamp;
30  std::vector<CounterValue> counterValues;
31 };
32 
34 {
35  CounterStatus(uint16_t backendCounterId,
36  uint16_t globalCounterId,
37  bool enabled,
38  uint32_t samplingRateInMicroseconds)
39  : m_BackendCounterId(backendCounterId),
40  m_GlobalCounterId(globalCounterId),
41  m_Enabled(enabled),
42  m_SamplingRateInMicroseconds(samplingRateInMicroseconds) {}
45  bool m_Enabled;
47 };
48 
50 {
51 public:
52  virtual void RegisterCategory(const std::string& categoryName,
53  const Optional<uint16_t>& deviceUid = EmptyOptional(),
54  const Optional<uint16_t>& counterSetUid = EmptyOptional()) = 0;
55 
56  virtual uint16_t RegisterDevice(const std::string& deviceName,
57  uint16_t cores = 0,
58  const Optional<std::string>& parentCategoryName = EmptyOptional()) = 0;
59 
60  virtual uint16_t RegisterCounterSet(const std::string& counterSetName,
61  uint16_t count = 0,
62  const Optional<std::string>& parentCategoryName = EmptyOptional()) = 0;
63 
64  virtual uint16_t RegisterCounter(const uint16_t uid,
65  const std::string& parentCategoryName,
66  uint16_t counterClass,
67  uint16_t interpolation,
68  double multiplier,
69  const std::string& name,
70  const std::string& description,
71  const Optional<std::string>& units = EmptyOptional(),
72  const Optional<uint16_t>& numberOfCores = EmptyOptional(),
73  const Optional<uint16_t>& deviceUid = EmptyOptional(),
74  const Optional<uint16_t>& counterSetUid = EmptyOptional()) = 0;
75 
77 };
78 
80 {
81 public:
83  {}
84 
85  virtual std::unique_ptr<IRegisterBackendCounters>
86  GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) = 0;
87 
88  virtual std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() = 0;
89 
90  virtual IProfilingGuidGenerator& GetProfilingGuidGenerator() = 0;
91 
92  virtual void ReportCounters(const std::vector<Timestamp>& counterValues) = 0;
93 
94  virtual CounterStatus GetCounterStatus(uint16_t backendCounterId) = 0;
95 
96  virtual std::vector<CounterStatus> GetActiveCounters() = 0;
97 
98  virtual bool IsProfilingEnabled() const = 0;
99 
100 };
101 
102 } // namespace profiling
103 
104 } // namespace armnn
std::vector< CounterValue > counterValues
CounterStatus(uint16_t backendCounterId, uint16_t globalCounterId, bool enabled, uint32_t samplingRateInMicroseconds)
CounterValue(uint16_t id, uint32_t value)