ArmNN
 21.08
JsonPrinter Class Reference

#include <JsonPrinter.hpp>

Inheritance diagram for JsonPrinter:
JsonUtils

Public Member Functions

void PrintJsonChildObject (const JsonChildObject &object, size_t &id)
 
void PrintLabel (const std::string &label, size_t id)
 
void PrintUnit (armnn::Measurement::Unit unit)
 
void PrintType (armnn::JsonObjectType type)
 
void PrintGuid (armnn::profiling::ProfilingGuid guid)
 
void PrintMeasurementsList (const std::vector< double > &measurementsVector)
 
 JsonPrinter (std::ostream &outputStream)
 
- Public Member Functions inherited from JsonUtils
 JsonUtils (std::ostream &outputStream)
 
void PrintTabs ()
 
void DecrementNumberOfTabs ()
 
void IncrementNumberOfTabs ()
 
void PrintNewLine ()
 
void PrintFooter ()
 
void PrintHeader ()
 
void PrintArmNNHeader ()
 
void PrintSeparator ()
 

Detailed Description

Definition at line 102 of file JsonPrinter.hpp.

Constructor & Destructor Documentation

◆ JsonPrinter()

JsonPrinter ( std::ostream &  outputStream)
inline

Definition at line 113 of file JsonPrinter.hpp.

114  : JsonUtils(outputStream), m_OutputStream(outputStream)
115  {}
JsonUtils(std::ostream &outputStream)
Definition: JsonUtils.hpp:19

Member Function Documentation

◆ PrintGuid()

void PrintGuid ( armnn::profiling::ProfilingGuid  guid)

Definition at line 127 of file JsonPrinter.cpp.

References JsonUtils::PrintTabs().

Referenced by JsonPrinter::PrintJsonChildObject().

128 {
129  PrintTabs();
130  m_OutputStream << std::quoted("GUID") << ": " << std::quoted(std::to_string(guid)) << "," << std::endl;
131 }

◆ PrintJsonChildObject()

void PrintJsonChildObject ( const JsonChildObject object,
size_t &  id 
)

Definition at line 15 of file JsonPrinter.cpp.

References armnn::Event, armnn::ExecObjectDesc, armnn::Measurement, JsonUtils::PrintFooter(), JsonPrinter::PrintGuid(), JsonPrinter::PrintLabel(), JsonPrinter::PrintMeasurementsList(), JsonUtils::PrintNewLine(), JsonUtils::PrintSeparator(), JsonUtils::PrintTabs(), JsonPrinter::PrintType(), and JsonPrinter::PrintUnit().

Referenced by ProfilerImpl::Print().

16 {
17  if (object.GetType() == JsonObjectType::Event)
18  {
19  // Increase the Id for new events. This ensures a new event has a unique ID and any measurements belonging
20  // to the event have the same id. This id is appended to the name during the call to PrintLabel() below.
21  id++;
22  }
23 
24  if (object.GetType() != JsonObjectType::ExecObjectDesc)
25  {
26  PrintLabel(object.m_Label, id);
27  if (object.m_Guid.has_value())
28  {
29  PrintGuid(object.m_Guid.value());
30  }
31  PrintType(object.m_Type);
32  }
33 
34  if (!object.m_Measurements.empty() || !object.m_Children.empty())
35  {
37  PrintNewLine();
38  }
39  if (object.GetType() == JsonObjectType::Measurement)
40  {
41  PrintMeasurementsList(object.m_Measurements);
43  PrintNewLine();
44  PrintUnit(object.m_Unit);
45  }
46  else if (object.GetType() == JsonObjectType::ExecObjectDesc)
47  {
48  for (std::string stringLine : object.m_LayerDetailsList)
49  {
50  PrintTabs();
51  m_OutputStream << stringLine;
52  PrintNewLine();
53  }
54  }
55  if (!object.m_Children.empty())
56  {
57  for (unsigned int childIndex = 0; childIndex < object.m_Children.size(); ++childIndex)
58  {
59  PrintJsonChildObject(object.m_Children[childIndex], id);
60  // Only print separator and new line if current child is not the last element.
61  if (&object.m_Children[childIndex] != &object.m_Children.back())
62  {
64  PrintNewLine();
65  }
66  }
67  }
68  if (object.GetType() != JsonObjectType::ExecObjectDesc)
69  {
70  PrintNewLine();
71  PrintFooter();
72  }
73 }
void PrintGuid(armnn::profiling::ProfilingGuid guid)
void PrintFooter()
Definition: JsonUtils.hpp:51
void PrintMeasurementsList(const std::vector< double > &measurementsVector)
void PrintType(armnn::JsonObjectType type)
Definition: JsonPrinter.cpp:97
void PrintJsonChildObject(const JsonChildObject &object, size_t &id)
Definition: JsonPrinter.cpp:15
void PrintNewLine()
Definition: JsonUtils.hpp:46
void PrintSeparator()
Definition: JsonUtils.hpp:70
void PrintLabel(const std::string &label, size_t id)
Definition: JsonPrinter.cpp:82
void PrintUnit(armnn::Measurement::Unit unit)
Definition: JsonPrinter.cpp:89

◆ PrintLabel()

void PrintLabel ( const std::string &  label,
size_t  id 
)

Definition at line 82 of file JsonPrinter.cpp.

References JsonUtils::IncrementNumberOfTabs(), and JsonUtils::PrintTabs().

Referenced by JsonPrinter::PrintJsonChildObject().

83 {
84  PrintTabs();
85  m_OutputStream << R"(")" << MakeKey(label, id) << R"(": {)" << std::endl;
87 }
void IncrementNumberOfTabs()
Definition: JsonUtils.hpp:41

◆ PrintMeasurementsList()

void PrintMeasurementsList ( const std::vector< double > &  measurementsVector)

Definition at line 133 of file JsonPrinter.cpp.

References JsonUtils::DecrementNumberOfTabs(), JsonUtils::IncrementNumberOfTabs(), and JsonUtils::PrintTabs().

Referenced by JsonPrinter::PrintJsonChildObject().

134 {
135  if (measurementsVector.empty())
136  {
137  return;
138  }
139 
140  PrintTabs();
141  m_OutputStream << R"("raw": [)" << std::endl;
143  PrintTabs();
144  auto iter = measurementsVector.begin();
145  m_OutputStream << *iter;
146  for (iter = std::next(iter); iter != measurementsVector.end(); ++iter)
147  {
148  m_OutputStream << "," << std::endl;
149  PrintTabs();
150  m_OutputStream << *iter;
151  }
152  m_OutputStream << std::endl;
154  PrintTabs();
155  m_OutputStream << "]";
156 }
void DecrementNumberOfTabs()
Definition: JsonUtils.hpp:32
void IncrementNumberOfTabs()
Definition: JsonUtils.hpp:41

◆ PrintType()

void PrintType ( armnn::JsonObjectType  type)

Definition at line 97 of file JsonPrinter.cpp.

References armnn::Event, armnn::ExecObjectDesc, armnn::Measurement, and JsonUtils::PrintTabs().

Referenced by JsonPrinter::PrintJsonChildObject().

98 {
99  auto ToString = [](armnn::JsonObjectType type)
100  {
101  switch (type)
102  {
104  {
105  return "Measurement";
106  }
108  {
109  return "Event";
110  }
112  {
113  return "Operator Description";
114  }
115  default:
116  {
117  return "Unknown";
118  }
119  }
120  };
121  PrintTabs();
122  m_OutputStream << R"("type": ")";
123  m_OutputStream << ToString(type);
124  m_OutputStream << R"(")";
125 }
JsonObjectType
Definition: JsonPrinter.hpp:20

◆ PrintUnit()

void PrintUnit ( armnn::Measurement::Unit  unit)

Definition at line 89 of file JsonPrinter.cpp.

References JsonUtils::PrintTabs(), and Measurement::ToString().

Referenced by JsonPrinter::PrintJsonChildObject().

90 {
91  PrintTabs();
92  m_OutputStream << R"("unit": ")";
93  m_OutputStream << armnn::Measurement::ToString(unit);
94  m_OutputStream << R"(")";
95 }
static const char * ToString(Unit unit)
Definition: Instrument.hpp:23

The documentation for this class was generated from the following files: