diff options
author | Keith Davis <keith.davis@arm.com> | 2021-07-20 11:25:22 +0100 |
---|---|---|
committer | Keith Davis <keith.davis@arm.com> | 2021-08-04 11:49:16 +0100 |
commit | 554fa09a0f3d6c9c572634c9d2de9bfb6c3218b0 (patch) | |
tree | 1820a2cadcc1f34667199acff2d044e5d2083ea2 /src/armnn/JsonPrinter.hpp | |
parent | 96fd98c28441618fbdf9376fe46a368ef06b19e1 (diff) | |
download | armnn-554fa09a0f3d6c9c572634c9d2de9bfb6c3218b0.tar.gz |
IVGCVSW-5980 JSON profiling output
* Add new ProfilingDetails class to construct operator details string
* Add new macro which helps append layer details to ostream
* Add ProfilingEnabled to NetworkProperties so that profiling can be
realised when loading the network
* Add further optional info to WorkloadInfo specific to convolutions
* Generalise some JsonPrinter functions into JsonUtils for reusability
* Remove explicit enabling of profiling within InferenceModel as it is
done when loading network
* Add ProfilingDetails macros to ConvolutionWorkloads for validation
Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: Ie84bc7dc667e72e6bcb635544f9ead7af1765690
Diffstat (limited to 'src/armnn/JsonPrinter.hpp')
-rw-r--r-- | src/armnn/JsonPrinter.hpp | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/armnn/JsonPrinter.hpp b/src/armnn/JsonPrinter.hpp index 04f56b0134..4af1609ee3 100644 --- a/src/armnn/JsonPrinter.hpp +++ b/src/armnn/JsonPrinter.hpp @@ -5,12 +5,13 @@ #pragma once -#include <ostream> -#include <string.h> +#include <string> #include <map> #include <set> +#include <sstream> #include "Instrument.hpp" +#include "JsonUtils.hpp" namespace armnn { @@ -18,13 +19,15 @@ namespace armnn enum class JsonObjectType { Measurement, - Event + Event, + ExecObjectDesc }; struct JsonChildObject { + // Object type changes according to the JsonObjectType specified in enum JsonChildObject(const std::string& label) - : m_Label(label), m_Unit(Measurement::Unit::TIME_MS), m_Type(JsonObjectType::Event) + : m_Label(label), m_Unit(Measurement::Unit::TIME_MS), m_Type(JsonObjectType::Event) {} JsonChildObject(const JsonChildObject&) = default; @@ -33,6 +36,16 @@ struct JsonChildObject m_Measurements.push_back(measurement); } + void SetAndParseDetails(std::string layerDetailsStr) + { + std::stringstream layerDetails(layerDetailsStr); + std::string stringLine; + while (std::getline(layerDetails, stringLine, '\n')) + { + m_LayerDetailsList.push_back(stringLine); + } + } + void AddChild(const JsonChildObject& childObject) { m_Children.push_back(childObject); @@ -69,39 +82,31 @@ struct JsonChildObject Measurement::Unit m_Unit; JsonObjectType m_Type; std::vector<double> m_Measurements; + std::vector<std::string> m_LayerDetailsList; std::vector<JsonChildObject> m_Children; private: JsonChildObject() = delete; }; -class JsonPrinter +class JsonPrinter : public JsonUtils { public: void PrintJsonChildObject(const JsonChildObject& object, size_t& id); - void PrintHeader(); - void PrintArmNNHeader(); - void PrintFooter(); - void PrintSeparator(); - void PrintNewLine(); void PrintLabel(const std::string& label, size_t id); void PrintUnit(armnn::Measurement::Unit unit); void PrintType(armnn::JsonObjectType type); void PrintMeasurementsList(const std::vector<double>& measurementsVector); public: - JsonPrinter(std::ostream &outputStream) - : m_OutputStream(outputStream), m_NumTabs(0) + JsonPrinter(std::ostream& outputStream) + : JsonUtils(outputStream), m_OutputStream(outputStream) {} private: std::string MakeKey(const std::string& label, size_t id); - void PrintTabs(); - void DecrementNumberOfTabs(); - void IncrementNumberOfTabs(); - std::ostream &m_OutputStream; - unsigned int m_NumTabs; + std::ostream& m_OutputStream; }; } // namespace armnn
\ No newline at end of file |