aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Davis <keith.davis@arm.com>2021-10-22 14:17:19 +0100
committerKeithARM <keith.davis@arm.com>2021-10-27 10:50:14 +0000
commitec22ad2c54e1706cdd51a3d784f87c7d189120ae (patch)
treeccc1395a2dd684cd4250009940603e42a0c4fa5a
parent615ad6cde5a56d8f38e1b9261621b40671a00ed7 (diff)
downloadarmnn-ec22ad2c54e1706cdd51a3d784f87c7d189120ae.tar.gz
IVGCVSW-6291 Issue parsing profiling layer details
* Remove ConfigureDetailsObject function as it does not have ProfilerImpl scope * Add Graph title into Json structure Signed-off-by: Keith Davis <keith.davis@arm.com> Change-Id: Ia5068a5a457a77fd01e974e0b5aa0f309f15bfa7
-rw-r--r--src/armnn/JsonPrinter.cpp17
-rw-r--r--src/armnn/JsonPrinter.hpp14
-rw-r--r--src/armnn/Profiling.cpp9
-rw-r--r--src/armnn/ProfilingDetails.hpp9
4 files changed, 44 insertions, 5 deletions
diff --git a/src/armnn/JsonPrinter.cpp b/src/armnn/JsonPrinter.cpp
index 94ff7c0610..4be956b90b 100644
--- a/src/armnn/JsonPrinter.cpp
+++ b/src/armnn/JsonPrinter.cpp
@@ -45,12 +45,29 @@ void JsonPrinter::PrintJsonChildObject(const JsonChildObject& object, size_t& id
}
else if (object.GetType() == JsonObjectType::ExecObjectDesc)
{
+ // Add details opening
+ DecrementNumberOfTabs();
+ PrintTabs();
+ m_OutputStream << std::quoted("Graph") << ":[{";
+ PrintNewLine();
+ IncrementNumberOfTabs();
+
+ // Fill details body
for (std::string stringLine : object.m_LayerDetailsList)
{
PrintTabs();
m_OutputStream << stringLine;
PrintNewLine();
}
+
+ // Close out details
+ DecrementNumberOfTabs();
+ PrintTabs();
+
+ object.IsDetailsOnlyEnabled() ? m_OutputStream << "]" : m_OutputStream << "],";
+
+ PrintNewLine();
+ IncrementNumberOfTabs();
}
if (!object.m_Children.empty())
{
diff --git a/src/armnn/JsonPrinter.hpp b/src/armnn/JsonPrinter.hpp
index 9e8ecb48e5..d9b83869d7 100644
--- a/src/armnn/JsonPrinter.hpp
+++ b/src/armnn/JsonPrinter.hpp
@@ -31,7 +31,8 @@ struct JsonChildObject
: m_Label(label),
m_Unit(Measurement::Unit::TIME_MS),
m_Type(JsonObjectType::Event),
- m_Guid(armnn::EmptyOptional())
+ m_Guid(armnn::EmptyOptional()),
+ m_DetailsOnly(false)
{}
JsonChildObject(const JsonChildObject&) = default;
@@ -85,6 +86,16 @@ struct JsonChildObject
return m_Type;
}
+ void EnableDetailsOnly()
+ {
+ m_DetailsOnly = true;
+ }
+
+ bool IsDetailsOnlyEnabled() const
+ {
+ return m_DetailsOnly;
+ }
+
~JsonChildObject() = default;
std::string m_Label;
@@ -96,6 +107,7 @@ struct JsonChildObject
std::vector<JsonChildObject> m_Children;
private:
+ bool m_DetailsOnly;
JsonChildObject() = delete;
};
diff --git a/src/armnn/Profiling.cpp b/src/armnn/Profiling.cpp
index 6a3522ba29..e7df459103 100644
--- a/src/armnn/Profiling.cpp
+++ b/src/armnn/Profiling.cpp
@@ -411,7 +411,12 @@ void ProfilerImpl::Print(std::ostream& outStream) const
|| m_DetailsToStdOutMethod == ProfilingDetailsMethod::DetailsWithEvents))
{
JsonChildObject detailsObject{ "layer_details" };
- ConfigureDetailsObject(detailsObject, m_ProfilingDetails.get()->GetProfilingDetails());
+ if (m_DetailsToStdOutMethod == ProfilingDetailsMethod::DetailsOnly)
+ {
+ detailsObject.EnableDetailsOnly();
+ }
+ detailsObject.SetType(JsonObjectType::ExecObjectDesc);
+ detailsObject.SetAndParseDetails(m_ProfilingDetails.get()->GetProfilingDetails());
size_t id = 0;
printer.PrintJsonChildObject(detailsObject, id);
@@ -428,9 +433,9 @@ void ProfilerImpl::Print(std::ostream& outStream) const
printer.PrintSeparator();
printer.PrintNewLine();
printer.PrintJsonChildObject(inferenceObject, id);
+ printer.PrintNewLine();
}
// end of ArmNN
- printer.PrintNewLine();
printer.PrintFooter();
// end of main JSON object
diff --git a/src/armnn/ProfilingDetails.hpp b/src/armnn/ProfilingDetails.hpp
index befc437dd7..1bed395486 100644
--- a/src/armnn/ProfilingDetails.hpp
+++ b/src/armnn/ProfilingDetails.hpp
@@ -36,6 +36,13 @@ public:
const WorkloadInfo& infos,
const profiling::ProfilingGuid guid)
{
+ // Once details exist, we can assume we're on the second iteration of details
+ if (m_DetailsExist)
+ {
+ PrintSeparator();
+ PrintNewLine();
+ }
+
m_ProfilingDetails << std::quoted("Name") << ": " << std::quoted(workloadName) << " ";
PrintHeader();
@@ -78,8 +85,6 @@ public:
StringifyLayerParameters<DescriptorType>::Serialize(extractParams, desc);
PrintFooter();
- PrintSeparator();
- PrintNewLine();
m_DetailsExist = true;
}