aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2020-02-27 16:21:41 +0000
committerJim Flynn <jim.flynn@arm.com>2020-03-18 12:59:19 +0000
commite6a2ccd09060ba93203ddc5a7f79260cedf2c147 (patch)
treec542464311f16acde42fbe01df9f4d8a78feff64 /src
parenteba482e691bb314e1379d29f267ec3b46a082d01 (diff)
downloadarmnn-e6a2ccd09060ba93203ddc5a7f79260cedf2c147.tar.gz
IVGCVSW-4161 Provide for per model call back registration
!armnn:2810 Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: Idf56d42bd767baa5df0059a2f489f75281f8ac71
Diffstat (limited to 'src')
-rw-r--r--src/timelineDecoder/TimelineCaptureCommandHandler.cpp17
-rw-r--r--src/timelineDecoder/TimelineCaptureCommandHandler.hpp17
-rw-r--r--src/timelineDecoder/TimelineDecoder.cpp33
-rw-r--r--src/timelineDecoder/TimelineDecoder.hpp3
-rw-r--r--src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp3
-rw-r--r--src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp6
-rw-r--r--src/timelineDecoder/tests/TimelineTests.cpp8
7 files changed, 72 insertions, 15 deletions
diff --git a/src/timelineDecoder/TimelineCaptureCommandHandler.cpp b/src/timelineDecoder/TimelineCaptureCommandHandler.cpp
index fb6935e247..58edd9fc43 100644
--- a/src/timelineDecoder/TimelineCaptureCommandHandler.cpp
+++ b/src/timelineDecoder/TimelineCaptureCommandHandler.cpp
@@ -6,7 +6,7 @@
#include "TimelineCaptureCommandHandler.hpp"
#include <string>
-
+#include <armnn/Logging.hpp>
namespace armnn
{
@@ -28,7 +28,15 @@ void TimelineCaptureCommandHandler::ParseData(const armnn::profiling::Packet& pa
uint32_t offset = 0;
m_PacketLength = packet.GetLength();
- if ( m_PacketLength < 8 )
+ // We are expecting TimelineDirectoryCaptureCommandHandler to set the thread id size
+ // if it not set in the constructor
+ if (m_ThreadIdSize == 0)
+ {
+ ARMNN_LOG(error) << "TimelineCaptureCommandHandler: m_ThreadIdSize has not been set";
+ return;
+ }
+
+ if (packet.GetLength() < 8)
{
return;
}
@@ -125,6 +133,11 @@ void TimelineCaptureCommandHandler::ReadEvent(const unsigned char* data, uint32_
m_TimelineDecoder.CreateEvent(event);
}
+void TimelineCaptureCommandHandler::SetThreadIdSize(uint32_t size)
+{
+ m_ThreadIdSize = size;
+}
+
void TimelineCaptureCommandHandler::operator()(const profiling::Packet& packet)
{
ParseData(packet);
diff --git a/src/timelineDecoder/TimelineCaptureCommandHandler.hpp b/src/timelineDecoder/TimelineCaptureCommandHandler.hpp
index b69e615b56..e143b5f6e5 100644
--- a/src/timelineDecoder/TimelineCaptureCommandHandler.hpp
+++ b/src/timelineDecoder/TimelineCaptureCommandHandler.hpp
@@ -5,9 +5,9 @@
#pragma once
-#include <CommandHandlerFunctor.hpp>
#include "armnn/profiling/ITimelineDecoder.hpp"
+#include <CommandHandlerFunctor.hpp>
#include <Packet.hpp>
#include <ProfilingUtils.hpp>
@@ -31,11 +31,11 @@ public:
uint32_t packetId,
uint32_t version,
ITimelineDecoder& timelineDecoder,
- uint32_t threadId_size)
- : CommandHandlerFunctor(familyId, packetId, version),
- m_TimelineDecoder(timelineDecoder),
- m_ThreadIdSize(threadId_size),
- m_PacketLength(0)
+ uint32_t threadIdSize = 0)
+ : CommandHandlerFunctor(familyId, packetId, version)
+ , m_TimelineDecoder(timelineDecoder)
+ , m_ThreadIdSize(threadIdSize)
+ , m_PacketLength(0)
{}
void operator()(const armnn::profiling::Packet& packet) override;
@@ -46,12 +46,13 @@ public:
void ReadRelationship(const unsigned char* data, uint32_t& offset);
void ReadEvent(const unsigned char* data, uint32_t& offset);
+ void SetThreadIdSize(uint32_t size);
+
private:
void ParseData(const armnn::profiling::Packet& packet);
ITimelineDecoder& m_TimelineDecoder;
-
- const uint32_t m_ThreadIdSize;
+ uint32_t m_ThreadIdSize;
unsigned int m_PacketLength;
static const ReadFunction m_ReadFunctions[];
diff --git a/src/timelineDecoder/TimelineDecoder.cpp b/src/timelineDecoder/TimelineDecoder.cpp
index 2f9ac135b4..f7f4663530 100644
--- a/src/timelineDecoder/TimelineDecoder.cpp
+++ b/src/timelineDecoder/TimelineDecoder.cpp
@@ -4,13 +4,14 @@
//
#include "TimelineDecoder.hpp"
-#include "../profiling/ProfilingUtils.hpp"
-
+#include <ProfilingUtils.hpp>
#include <iostream>
+
namespace armnn
{
namespace timelinedecoder
{
+
TimelineDecoder::TimelineStatus TimelineDecoder::CreateEntity(const Entity &entity)
{
if (m_OnNewEntityCallback == nullptr)
@@ -120,6 +121,34 @@ TimelineDecoder::TimelineStatus TimelineDecoder::SetRelationshipCallback(OnNewRe
return TimelineStatus::TimelineStatus_Success;
}
+void TimelineDecoder::SetDefaultCallbacks()
+{
+ SetEntityCallback([](Model& model, const ITimelineDecoder::Entity entity)
+ {
+ model.m_Entities.emplace_back(entity);
+ });
+
+ SetEventClassCallback([](Model& model, const ITimelineDecoder::EventClass eventClass)
+ {
+ model.m_EventClasses.emplace_back(eventClass);
+ });
+
+ SetEventCallback([](Model& model, const ITimelineDecoder::Event event)
+ {
+ model.m_Events.emplace_back(event);
+ });
+
+ SetLabelCallback([](Model& model, const ITimelineDecoder::Label label)
+ {
+ model.m_Labels.emplace_back(label);
+ });
+
+ SetRelationshipCallback([](Model& model, const ITimelineDecoder::Relationship relationship)
+ {
+ model.m_Relationships.emplace_back(relationship);
+ });
+}
+
void TimelineDecoder::print()
{
printLabels();
diff --git a/src/timelineDecoder/TimelineDecoder.hpp b/src/timelineDecoder/TimelineDecoder.hpp
index 405673164b..c6d1e4ee0a 100644
--- a/src/timelineDecoder/TimelineDecoder.hpp
+++ b/src/timelineDecoder/TimelineDecoder.hpp
@@ -39,13 +39,14 @@ public:
const Model& GetModel();
-
TimelineStatus SetEntityCallback(const OnNewEntityCallback);
TimelineStatus SetEventClassCallback(const OnNewEventClassCallback);
TimelineStatus SetEventCallback(const OnNewEventCallback);
TimelineStatus SetLabelCallback(const OnNewLabelCallback);
TimelineStatus SetRelationshipCallback(const OnNewRelationshipCallback);
+ void SetDefaultCallbacks();
+
void print();
private:
diff --git a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp b/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp
index 655e461b8c..74aefea142 100644
--- a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp
+++ b/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp
@@ -4,6 +4,7 @@
//
#include "TimelineDirectoryCaptureCommandHandler.hpp"
+#include "TimelineCaptureCommandHandler.hpp"
#include <iostream>
#include <string>
@@ -41,6 +42,8 @@ void TimelineDirectoryCaptureCommandHandler::ParseData(const armnn::profiling::P
{
m_SwTraceMessages.push_back(profiling::ReadSwTraceMessage(data, offset));
}
+
+ m_TimelineCaptureCommandHandler.SetThreadIdSize(m_SwTraceHeader.m_ThreadIdBytes);
}
void TimelineDirectoryCaptureCommandHandler::Print()
diff --git a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp b/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp
index b4e0fd2d7d..a22a5d9f87 100644
--- a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp
+++ b/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp
@@ -5,7 +5,8 @@
#pragma once
-#include <CommandHandlerFunctor.hpp>
+
+#include <TimelineCaptureCommandHandler.hpp>
#include <Packet.hpp>
#include <PacketBuffer.hpp>
#include <ProfilingUtils.hpp>
@@ -26,8 +27,10 @@ public:
TimelineDirectoryCaptureCommandHandler(uint32_t familyId,
uint32_t packetId,
uint32_t version,
+ TimelineCaptureCommandHandler& timelineCaptureCommandHandler,
bool quietOperation = false)
: CommandHandlerFunctor(familyId, packetId, version)
+ , m_TimelineCaptureCommandHandler(timelineCaptureCommandHandler)
, m_QuietOperation(quietOperation)
{}
@@ -40,6 +43,7 @@ private:
void ParseData(const armnn::profiling::Packet& packet);
void Print();
+ TimelineCaptureCommandHandler& m_TimelineCaptureCommandHandler;
bool m_QuietOperation;
};
diff --git a/src/timelineDecoder/tests/TimelineTests.cpp b/src/timelineDecoder/tests/TimelineTests.cpp
index 62b4330e1f..1f55515758 100644
--- a/src/timelineDecoder/tests/TimelineTests.cpp
+++ b/src/timelineDecoder/tests/TimelineTests.cpp
@@ -83,8 +83,13 @@ BOOST_AUTO_TEST_CASE(TimelineDirectoryTest)
profiling::PacketVersionResolver packetVersionResolver;
+ TimelineDecoder timelineDecoder;
+ TimelineCaptureCommandHandler timelineCaptureCommandHandler(
+ 1, 1, packetVersionResolver.ResolvePacketVersion(1, 1).GetEncodedValue(), timelineDecoder);
+
TimelineDirectoryCaptureCommandHandler timelineDirectoryCaptureCommandHandler(
- 1, 0, packetVersionResolver.ResolvePacketVersion(1, 0).GetEncodedValue(), true);
+ 1, 0, packetVersionResolver.ResolvePacketVersion(1, 0).GetEncodedValue(),
+ timelineCaptureCommandHandler, true);
sendTimelinePacket->SendTimelineMessageDirectoryPackage();
sendTimelinePacket->Commit();
@@ -151,6 +156,7 @@ BOOST_AUTO_TEST_CASE(TimelineCaptureTest)
TimelineDecoder timelineDecoder;
const TimelineDecoder::Model& model = timelineDecoder.GetModel();
+
TimelineCaptureCommandHandler timelineCaptureCommandHandler(
1, 1, packetVersionResolver.ResolvePacketVersion(1, 1).GetEncodedValue(), timelineDecoder, threadIdSize);