diff options
Diffstat (limited to 'src/timelineDecoder')
-rw-r--r-- | src/timelineDecoder/CMakeLists.txt | 26 | ||||
-rw-r--r-- | src/timelineDecoder/JSONTimelineDecoder.cpp | 1 | ||||
-rw-r--r-- | src/timelineDecoder/JSONTimelineDecoder.hpp | 4 | ||||
-rw-r--r-- | src/timelineDecoder/TimelineCaptureCommandHandler.cpp | 164 | ||||
-rw-r--r-- | src/timelineDecoder/TimelineCaptureCommandHandler.hpp | 65 | ||||
-rw-r--r-- | src/timelineDecoder/TimelineDecoder.cpp | 323 | ||||
-rw-r--r-- | src/timelineDecoder/TimelineDecoder.hpp | 70 | ||||
-rw-r--r-- | src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp | 118 | ||||
-rw-r--r-- | src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp | 52 | ||||
-rw-r--r-- | src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp | 348 | ||||
-rw-r--r-- | src/timelineDecoder/tests/TimelineTests.cpp | 369 |
11 files changed, 186 insertions, 1354 deletions
diff --git a/src/timelineDecoder/CMakeLists.txt b/src/timelineDecoder/CMakeLists.txt index 695aa5cbe8..e7d5481eb5 100644 --- a/src/timelineDecoder/CMakeLists.txt +++ b/src/timelineDecoder/CMakeLists.txt @@ -1,37 +1,31 @@ # -# Copyright © 2020 Arm Ltd. All rights reserved. +# Copyright © 2020 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # if(BUILD_TIMELINE_DECODER) - set(timelineDecoder_sources) - list(APPEND timelineDecoder_sources - ${PROJECT_SOURCE_DIR}/include/armnn/profiling/ITimelineDecoder.hpp - TimelineCaptureCommandHandler.cpp - TimelineCaptureCommandHandler.hpp + set(jsonTimelineDecoder_sources) + list(APPEND jsonTimelineDecoder_sources JSONTimelineDecoder.cpp - JSONTimelineDecoder.hpp - TimelineDecoder.cpp - TimelineDecoder.hpp - TimelineDirectoryCaptureCommandHandler.cpp - TimelineDirectoryCaptureCommandHandler.hpp) + JSONTimelineDecoder.hpp) include_directories(${PROJECT_SOURCE_DIR}/src/profiling ${PROJECT_SOURCE_DIR}/profiling/common/include + ${PROJECT_SOURCE_DIR}/profiling/server/include/timelineDecoder ${PROJECT_SOURCE_DIR}/src/armnnUtils) if(BUILD_UNIT_TESTS) target_include_directories(UnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/timelineDecoder) endif() - add_library_ex(timelineDecoder SHARED ${timelineDecoder_sources}) + add_library_ex(jsonTimelineDecoder SHARED ${jsonTimelineDecoder_sources}) - set_target_properties(timelineDecoder PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) - set_target_properties(timelineDecoder PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) + set_target_properties(jsonTimelineDecoder PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + set_target_properties(jsonTimelineDecoder PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) - target_link_libraries(timelineDecoder armnn) + target_link_libraries(jsonTimelineDecoder armnn) - install(TARGETS timelineDecoder + install(TARGETS jsonTimelineDecoder LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() diff --git a/src/timelineDecoder/JSONTimelineDecoder.cpp b/src/timelineDecoder/JSONTimelineDecoder.cpp index c0e81370ed..0eafe493aa 100644 --- a/src/timelineDecoder/JSONTimelineDecoder.cpp +++ b/src/timelineDecoder/JSONTimelineDecoder.cpp @@ -7,7 +7,6 @@ #include "../profiling/ProfilingUtils.hpp" #include <string> -#include <fstream> namespace armnn { diff --git a/src/timelineDecoder/JSONTimelineDecoder.hpp b/src/timelineDecoder/JSONTimelineDecoder.hpp index a6e2579b45..7fed9a1a86 100644 --- a/src/timelineDecoder/JSONTimelineDecoder.hpp +++ b/src/timelineDecoder/JSONTimelineDecoder.hpp @@ -5,7 +5,7 @@ #pragma once -#include <armnn/profiling/ITimelineDecoder.hpp> +#include <server/include/timelineDecoder/ITimelineDecoder.hpp> #include <Filesystem.hpp> #include <map> @@ -15,7 +15,7 @@ namespace armnn { namespace timelinedecoder { -class JSONTimelineDecoder : public ITimelineDecoder +class JSONTimelineDecoder : public arm::pipe::ITimelineDecoder { public: struct JSONEntity diff --git a/src/timelineDecoder/TimelineCaptureCommandHandler.cpp b/src/timelineDecoder/TimelineCaptureCommandHandler.cpp deleted file mode 100644 index 39a806ce87..0000000000 --- a/src/timelineDecoder/TimelineCaptureCommandHandler.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "TimelineCaptureCommandHandler.hpp" - -#include <string> -#include <armnn/Logging.hpp> -namespace armnn -{ - -namespace timelinedecoder -{ - -//Array of member functions, the array index matches the decl_id -const TimelineCaptureCommandHandler::ReadFunction TimelineCaptureCommandHandler::m_ReadFunctions[] -{ - &TimelineCaptureCommandHandler::ReadLabel, // Label decl_id = 0 - &TimelineCaptureCommandHandler::ReadEntity, // Entity decl_id = 1 - &TimelineCaptureCommandHandler::ReadEventClass, // EventClass decl_id = 2 - &TimelineCaptureCommandHandler::ReadRelationship, // Relationship decl_id = 3 - &TimelineCaptureCommandHandler::ReadEvent // Event decl_id = 4 -}; - -void TimelineCaptureCommandHandler::SetThreadIdSize(uint32_t size) -{ - m_ThreadIdSize = size; -} - -void TimelineCaptureCommandHandler::operator()(const profiling::Packet& packet) -{ - ParseData(packet); -} - -void TimelineCaptureCommandHandler::ParseData(const armnn::profiling::Packet& packet) -{ - uint32_t offset = 0; - m_PacketLength = packet.GetLength(); - - // 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; - } - - const unsigned char* data = reinterpret_cast<const unsigned char*>(packet.GetData()); - - uint32_t declId = 0; - - while ( offset < m_PacketLength ) - { - declId = profiling::ReadUint32(data, offset); - offset += uint32_t_size; - - ITimelineDecoder::TimelineStatus status = (this->*m_ReadFunctions[declId])(data, offset); - if (status == ITimelineDecoder::TimelineStatus::TimelineStatus_Fail) - { - ARMNN_LOG(error) << "Decode of timeline message type [" << declId << - "] at offset [" << offset << "] failed"; - break; - } - } -} - -ITimelineDecoder::TimelineStatus TimelineCaptureCommandHandler::ReadLabel(const unsigned char* data, uint32_t& offset) -{ - ITimelineDecoder::Label label; - label.m_Guid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - uint32_t nameLength = profiling::ReadUint32(data, offset); - offset += uint32_t_size; - - uint32_t i = 0; - // nameLength - 1 to account for null operator \0 - for ( i = 0; i < nameLength - 1; ++i ) - { - label.m_Name += static_cast<char>(profiling::ReadUint8(data, offset + i)); - } - // Shift offset past nameLength - uint32_t uint32WordAmount = (nameLength / uint32_t_size) + (nameLength % uint32_t_size != 0 ? 1 : 0); - offset += uint32WordAmount * uint32_t_size; - - return m_TimelineDecoder.CreateLabel(label); -} - -ITimelineDecoder::TimelineStatus TimelineCaptureCommandHandler::ReadEntity( - const unsigned char* data, uint32_t& offset) -{ - ITimelineDecoder::Entity entity; - entity.m_Guid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - return m_TimelineDecoder.CreateEntity(entity); -} - -ITimelineDecoder::TimelineStatus TimelineCaptureCommandHandler::ReadEventClass( - const unsigned char* data, uint32_t& offset) -{ - ITimelineDecoder::EventClass eventClass; - eventClass.m_Guid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - eventClass.m_NameGuid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - return m_TimelineDecoder.CreateEventClass(eventClass); -} - -ITimelineDecoder::TimelineStatus TimelineCaptureCommandHandler::ReadRelationship( - const unsigned char* data, uint32_t& offset) -{ - ITimelineDecoder::Relationship relationship; - relationship.m_RelationshipType = - static_cast<ITimelineDecoder::RelationshipType>(profiling::ReadUint32(data, offset)); - offset += uint32_t_size; - - relationship.m_Guid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - relationship.m_HeadGuid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - relationship.m_TailGuid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - relationship.m_AttributeGuid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - return m_TimelineDecoder.CreateRelationship(relationship); -} - -ITimelineDecoder::TimelineStatus TimelineCaptureCommandHandler::ReadEvent( - const unsigned char* data, uint32_t& offset) -{ - ITimelineDecoder::Event event; - event.m_TimeStamp = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - if ( m_ThreadIdSize == 4 ) - { - event.m_ThreadId = profiling::ReadUint32(data, offset); - } - else if ( m_ThreadIdSize == 8 ) - { - event.m_ThreadId = profiling::ReadUint64(data, offset); - } - - offset += m_ThreadIdSize; - - event.m_Guid = profiling::ReadUint64(data, offset); - offset += uint64_t_size; - - return m_TimelineDecoder.CreateEvent(event); -} - -} //namespace gatordmock - -} //namespace armnn diff --git a/src/timelineDecoder/TimelineCaptureCommandHandler.hpp b/src/timelineDecoder/TimelineCaptureCommandHandler.hpp deleted file mode 100644 index 0431e9ca49..0000000000 --- a/src/timelineDecoder/TimelineCaptureCommandHandler.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include <armnn/profiling/ITimelineDecoder.hpp> - -#include <CommandHandlerFunctor.hpp> -#include <Packet.hpp> -#include <ProfilingUtils.hpp> - -namespace armnn -{ - -namespace timelinedecoder -{ - -class TimelineCaptureCommandHandler : - public profiling::CommandHandlerFunctor -{ - // Utils - uint32_t uint32_t_size = sizeof(uint32_t); - uint32_t uint64_t_size = sizeof(uint64_t); - - using ReadFunction = ITimelineDecoder::TimelineStatus (TimelineCaptureCommandHandler::*)( - const unsigned char*, uint32_t&); - -public: - TimelineCaptureCommandHandler(uint32_t familyId, - uint32_t packetId, - uint32_t version, - ITimelineDecoder& timelineDecoder, - 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; - - - void SetThreadIdSize(uint32_t size); - -private: - void ParseData(const armnn::profiling::Packet& packet); - - ITimelineDecoder::TimelineStatus ReadLabel(const unsigned char* data, uint32_t& offset); - ITimelineDecoder::TimelineStatus ReadEntity(const unsigned char* data, uint32_t& offset); - ITimelineDecoder::TimelineStatus ReadEventClass(const unsigned char* data, uint32_t& offset); - ITimelineDecoder::TimelineStatus ReadRelationship(const unsigned char* data, uint32_t& offset); - ITimelineDecoder::TimelineStatus ReadEvent(const unsigned char* data, uint32_t& offset); - - ITimelineDecoder& m_TimelineDecoder; - uint32_t m_ThreadIdSize; - unsigned int m_PacketLength; - static const ReadFunction m_ReadFunctions[]; - -}; - -} //namespace gatordmock - -} //namespace armnn diff --git a/src/timelineDecoder/TimelineDecoder.cpp b/src/timelineDecoder/TimelineDecoder.cpp deleted file mode 100644 index 9aa84d2084..0000000000 --- a/src/timelineDecoder/TimelineDecoder.cpp +++ /dev/null @@ -1,323 +0,0 @@ -// -// Copyright © 2019 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "TimelineDecoder.hpp" -#include <ProfilingUtils.hpp> -#include <iostream> - -namespace armnn -{ -namespace timelinedecoder -{ - -TimelineDecoder::TimelineStatus TimelineDecoder::CreateEntity(const Entity &entity) -{ - if (m_OnNewEntityCallback == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewEntityCallback(m_Model, entity); - - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::CreateEventClass(const EventClass &eventClass) -{ - if (m_OnNewEventClassCallback == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewEventClassCallback(m_Model, eventClass); - - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::CreateEvent(const Event &event) -{ - if (m_OnNewEventCallback == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewEventCallback(m_Model, event); - - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::CreateLabel(const Label &label) -{ - if (m_OnNewLabelCallback == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewLabelCallback(m_Model, label); - - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::CreateRelationship(const Relationship &relationship) -{ - if (m_OnNewRelationshipCallback == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewRelationshipCallback(m_Model, relationship); - return TimelineStatus::TimelineStatus_Success; -} - -const TimelineDecoder::Model &TimelineDecoder::GetModel() -{ - return m_Model; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::SetEntityCallback(OnNewEntityCallback cb) -{ - if (cb == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewEntityCallback = cb; - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::SetEventClassCallback(OnNewEventClassCallback cb) -{ - if (cb == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewEventClassCallback = cb; - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::SetEventCallback(OnNewEventCallback cb) -{ - if (cb == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewEventCallback = cb; - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::SetLabelCallback(OnNewLabelCallback cb) -{ - if (cb == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewLabelCallback = cb; - return TimelineStatus::TimelineStatus_Success; -} - -TimelineDecoder::TimelineStatus TimelineDecoder::SetRelationshipCallback(OnNewRelationshipCallback cb) -{ - if (cb == nullptr) - { - return TimelineStatus::TimelineStatus_Fail; - } - m_OnNewRelationshipCallback = cb; - 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() -{ - if (m_Model.m_Labels.empty() && m_Model.m_Entities.empty() && m_Model.m_EventClasses.empty() && - m_Model.m_Events.empty() && m_Model.m_Relationships.empty()) - { - std::cout << "No timeline packets received" << std::endl; - return; - } - - printLabels(); - printEntities(); - printEventClasses(); - printEvents(); - printRelationships(); -} - -void TimelineDecoder::printLabels() -{ - std::string header; - - header.append(profiling::CentreAlignFormatting("guid", 12)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("value", 30)); - header.append("\n"); - - std::cout << "\n" << "\n"; - std::cout << profiling::CentreAlignFormatting("LABELS", static_cast<int>(header.size())); - std::cout << "\n"; - std::cout << std::string(header.size(), '=') << "\n"; - std::cout << header; - - for (uint32_t i = 0; i < m_Model.m_Labels.size(); ++i) - { - std::string body; - - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Labels[i].m_Guid), 12)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(m_Model.m_Labels[i].m_Name, 30)); - body.append("\n"); - - std::cout << std::string(body.size(), '-') << "\n"; - std::cout << body; - } -} - -void TimelineDecoder::printEntities() -{ - std::string header; - header.append(profiling::CentreAlignFormatting("guid", 12)); - header.append("\n"); - - std::cout << "\n" << "\n"; - std::cout << profiling::CentreAlignFormatting("ENTITIES", static_cast<int>(header.size())); - std::cout << "\n"; - std::cout << std::string(header.size(), '=') << "\n"; - std::cout << header; - - for (uint32_t i = 0; i < m_Model.m_Entities.size(); ++i) - { - std::string body; - - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Entities[i].m_Guid), 12)); - body.append("\n"); - - std::cout << std::string(body.size(), '-') << "\n"; - std::cout << body; - } -} - -void TimelineDecoder::printEventClasses() -{ - std::string header; - header.append(profiling::CentreAlignFormatting("guid", 12)); - header.append("\n"); - - std::cout << "\n" << "\n"; - std::cout << profiling::CentreAlignFormatting("EVENT CLASSES", static_cast<int>(header.size())); - std::cout << "\n"; - std::cout << std::string(header.size(), '=') << "\n"; - std::cout << header; - - for (uint32_t i = 0; i < m_Model.m_EventClasses.size(); ++i) - { - std::string body; - - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_EventClasses[i].m_Guid), 12)); - body.append("\n"); - - std::cout << std::string(body.size(), '-') << "\n"; - std::cout << body; - } -} - -void TimelineDecoder::printEvents() -{ - std::string header; - - header.append(profiling::CentreAlignFormatting("timestamp", 12)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("threadId", 12)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("eventGuid", 12)); - header.append("\n"); - - std::cout << "\n" << "\n"; - std::cout << profiling::CentreAlignFormatting("EVENTS", static_cast<int>(header.size())); - std::cout << "\n"; - std::cout << std::string(header.size(), '=') << "\n"; - std::cout << header; - - for (uint32_t i = 0; i < m_Model.m_Events.size(); ++i) - { - std::string body; - - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Events[i].m_TimeStamp), 12)); - body.append(" | "); - - std::stringstream ss; - ss << m_Model.m_Events[i].m_ThreadId; - std::string threadId = ss.str();; - - body.append(profiling::CentreAlignFormatting(threadId, 12)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Events[i].m_Guid), 12)); - body.append("\n"); - - std::cout << std::string(body.size(), '-') << "\n"; - std::cout << body; - } -} - -void TimelineDecoder::printRelationships() -{ - std::string header; - header.append(profiling::CentreAlignFormatting("relationshipType", 20)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("relationshipGuid", 20)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("headGuid", 12)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("tailGuid", 12)); - header.append("\n"); - - std::cout << "\n" << "\n"; - std::cout << profiling::CentreAlignFormatting("RELATIONSHIPS", static_cast<int>(header.size())); - std::cout << "\n"; - std::cout << std::string(header.size(), '=') << "\n"; - std::cout << header; - - for (uint32_t i = 0; i < m_Model.m_Relationships.size(); ++i) - { - std::string body; - - body.append( - profiling::CentreAlignFormatting(std::to_string(static_cast<unsigned int> - (m_Model.m_Relationships[i].m_RelationshipType)), - 20)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Relationships[i].m_Guid), 20)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Relationships[i].m_HeadGuid), 12)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(std::to_string(m_Model.m_Relationships[i].m_TailGuid), 12)); - body.append(" | "); - body.append("\n"); - - std::cout << std::string(body.size(), '-') << "\n"; - std::cout << body; - } -} -} -}
\ No newline at end of file diff --git a/src/timelineDecoder/TimelineDecoder.hpp b/src/timelineDecoder/TimelineDecoder.hpp deleted file mode 100644 index 2efdc4483b..0000000000 --- a/src/timelineDecoder/TimelineDecoder.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// -// Copyright © 2020 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#pragma once - -#include <armnn/profiling/ITimelineDecoder.hpp> - -#include <vector> - -namespace armnn -{ -namespace timelinedecoder -{ -class TimelineDecoder : public ITimelineDecoder -{ - -public: - - struct Model - { - std::vector<Entity> m_Entities; - std::vector<EventClass> m_EventClasses; - std::vector<Event> m_Events; - std::vector<Label> m_Labels; - std::vector<Relationship> m_Relationships; - }; - - using OnNewEntityCallback = void (*)(Model &, const Entity); - using OnNewEventClassCallback = void (*)(Model &, const EventClass); - using OnNewEventCallback = void (*)(Model &, const Event); - using OnNewLabelCallback = void (*)(Model &, const Label); - using OnNewRelationshipCallback = void (*)(Model &, const Relationship); - - virtual TimelineStatus CreateEntity(const Entity &) override; - virtual TimelineStatus CreateEventClass(const EventClass &) override; - virtual TimelineStatus CreateEvent(const Event &) override; - virtual TimelineStatus CreateLabel(const Label &) override; - virtual TimelineStatus CreateRelationship(const Relationship &) override; - - 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: - Model m_Model; - - OnNewEntityCallback m_OnNewEntityCallback; - OnNewEventClassCallback m_OnNewEventClassCallback; - OnNewEventCallback m_OnNewEventCallback; - OnNewLabelCallback m_OnNewLabelCallback; - OnNewRelationshipCallback m_OnNewRelationshipCallback; - - void printLabels(); - void printEntities(); - void printEventClasses(); - void printRelationships(); - void printEvents(); -}; - -} -}
\ No newline at end of file diff --git a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp b/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp deleted file mode 100644 index 5aac77c86a..0000000000 --- a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "TimelineDirectoryCaptureCommandHandler.hpp" -#include "TimelineCaptureCommandHandler.hpp" - -#include <iostream> -#include <string> - -using namespace armnn::profiling; - -namespace armnn -{ - -namespace timelinedecoder -{ - -void TimelineDirectoryCaptureCommandHandler::ParseData(const armnn::profiling::Packet& packet) -{ - uint32_t offset = 0; - - if (packet.GetLength() < 8) - { - return; - } - - const unsigned char* data = packet.GetData(); - - m_SwTraceHeader.m_StreamVersion = ReadUint8(data, offset); - offset += uint8_t_size; - m_SwTraceHeader.m_PointerBytes = ReadUint8(data, offset); - offset += uint8_t_size; - m_SwTraceHeader.m_ThreadIdBytes = ReadUint8(data, offset); - offset += uint8_t_size; - - uint32_t numberOfDeclarations = profiling::ReadUint32(data, offset); - offset += uint32_t_size; - - for (uint32_t declaration = 0; declaration < numberOfDeclarations; ++declaration) - { - m_SwTraceMessages.push_back(profiling::ReadSwTraceMessage(data, offset, packet.GetLength())); - } - - m_TimelineCaptureCommandHandler.SetThreadIdSize(m_SwTraceHeader.m_ThreadIdBytes); -} - -void TimelineDirectoryCaptureCommandHandler::Print() -{ - std::string header; - - header.append(profiling::CentreAlignFormatting("decl_id", 12)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("decl_name", 20)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("ui_name", 20)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("arg_types", 16)); - header.append(" | "); - header.append(profiling::CentreAlignFormatting("arg_names", 80)); - header.append("\n"); - - std::cout << "\n" << "\n"; - std::cout << profiling::CentreAlignFormatting("SW DIRECTORY", static_cast<int>(header.size())); - std::cout << "\n"; - std::cout << std::string(header.size(), '=') << "\n"; - - std::cout << header; - - for (const auto& swTraceMessage : m_SwTraceMessages) - { - std::string body; - - body.append(profiling::CentreAlignFormatting(std::to_string(swTraceMessage.m_Id), 12)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(swTraceMessage.m_Name, 20)); - body.append(" | "); - body.append(profiling::CentreAlignFormatting(swTraceMessage.m_UiName, 20)); - body.append(" | "); - - std::string argTypes; - for (auto argType: swTraceMessage.m_ArgTypes) - { - argTypes += argType; - argTypes += " "; - } - body.append(profiling::CentreAlignFormatting(argTypes, 16)); - body.append(" | "); - - std::string argNames; - for (auto argName: swTraceMessage.m_ArgNames) - { - argNames += argName + " "; - } - body.append(profiling::CentreAlignFormatting(argNames, 80)); - - body.append("\n"); - - std::cout << std::string(body.size(), '-') << "\n"; - - std::cout << body; - } -} - -void TimelineDirectoryCaptureCommandHandler::operator()(const profiling::Packet& packet) -{ - ParseData(packet); - - if (!m_QuietOperation) - { - Print(); - } -} - -} //namespace gatordmock - -} //namespace armnn diff --git a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp b/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp deleted file mode 100644 index 2879052340..0000000000 --- a/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// Copyright © 2019 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include "TimelineCaptureCommandHandler.hpp" - -#include <Packet.hpp> -#include <PacketBuffer.hpp> -#include <ProfilingUtils.hpp> - -namespace armnn -{ - -namespace timelinedecoder -{ - -class TimelineDirectoryCaptureCommandHandler : public profiling::CommandHandlerFunctor -{ - // Utils - uint32_t uint8_t_size = sizeof(uint8_t); - uint32_t uint32_t_size = sizeof(uint32_t); - -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) - {} - - void operator()(const armnn::profiling::Packet& packet) override; - - profiling::SwTraceHeader m_SwTraceHeader; - std::vector<profiling::SwTraceMessage> m_SwTraceMessages; - -private: - void ParseData(const armnn::profiling::Packet& packet); - void Print(); - - TimelineCaptureCommandHandler& m_TimelineCaptureCommandHandler; - bool m_QuietOperation; -}; - -} //namespace gatordmock - -} //namespace armnn diff --git a/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp b/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp index 3961f9bfb5..dfe5fd0609 100644 --- a/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp +++ b/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp @@ -4,8 +4,8 @@ // #include <JSONTimelineDecoder.hpp> -#include <TimelineCaptureCommandHandler.hpp> -#include <TimelineDecoder.hpp> +#include <server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp> +#include <server/include/timelineDecoder/TimelineDecoder.hpp> #include <Filesystem.hpp> #include <boost/test/test_tools.hpp> @@ -23,661 +23,661 @@ void RunSimpleModelThroughDecoder(JSONTimelineDecoder& timelineDecoder) /* * Building Simple model structure to test */ - ITimelineDecoder::Label name; + arm::pipe::ITimelineDecoder::Label name; name.m_Guid = uint64_t(10420554295983197538U); name.m_Name = "name"; timelineDecoder.CreateLabel(name); - ITimelineDecoder::Label type; + arm::pipe::ITimelineDecoder::Label type; type.m_Guid = uint64_t(14196220359693045352U); type.m_Name = "type"; timelineDecoder.CreateLabel(type); - ITimelineDecoder::Label index; + arm::pipe::ITimelineDecoder::Label index; index.m_Guid = uint64_t(13922236767355949814U); index.m_Name = "index"; timelineDecoder.CreateLabel(index); - ITimelineDecoder::Label backendId; + arm::pipe::ITimelineDecoder::Label backendId; backendId.m_Guid = uint64_t(10874037804557439415U); backendId.m_Name = "backendId"; timelineDecoder.CreateLabel(backendId); - ITimelineDecoder::Label layer; + arm::pipe::ITimelineDecoder::Label layer; layer.m_Guid = uint64_t(14761340794127440397U); layer.m_Name = "layer"; timelineDecoder.CreateLabel(layer); - ITimelineDecoder::Label workload; + arm::pipe::ITimelineDecoder::Label workload; workload.m_Guid = uint64_t(15704252740552608110U); workload.m_Name = "workload"; timelineDecoder.CreateLabel(workload); - ITimelineDecoder::Label network; + arm::pipe::ITimelineDecoder::Label network; network.m_Guid = uint64_t(16862199137063532871U); network.m_Name = "network"; timelineDecoder.CreateLabel(network); - ITimelineDecoder::Label connection; + arm::pipe::ITimelineDecoder::Label connection; connection.m_Guid = uint64_t(15733717748792475675U); connection.m_Name = "connection"; timelineDecoder.CreateLabel(connection); - ITimelineDecoder::Label inference; + arm::pipe::ITimelineDecoder::Label inference; inference.m_Guid = uint64_t(15026600058430441282U); inference.m_Name = "inference"; timelineDecoder.CreateLabel(inference); - ITimelineDecoder::Label workload_execution; + arm::pipe::ITimelineDecoder::Label workload_execution; workload_execution.m_Guid = uint64_t(10172155312650606003U); workload_execution.m_Name = "workload_execution"; timelineDecoder.CreateLabel(workload_execution); - ITimelineDecoder::EventClass eventClass1; + arm::pipe::ITimelineDecoder::EventClass eventClass1; eventClass1.m_Guid = uint64_t(17170418158534996719U); timelineDecoder.CreateEventClass(eventClass1); - ITimelineDecoder::EventClass eventClass2; + arm::pipe::ITimelineDecoder::EventClass eventClass2; eventClass2.m_Guid = uint64_t(10812061579584851344U); timelineDecoder.CreateEventClass(eventClass2); - ITimelineDecoder::Entity entity6; + arm::pipe::ITimelineDecoder::Entity entity6; entity6.m_Guid = uint64_t(6); timelineDecoder.CreateEntity(entity6); - ITimelineDecoder::Relationship relationship7; + arm::pipe::ITimelineDecoder::Relationship relationship7; relationship7.m_Guid = uint64_t(7); - relationship7.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship7.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship7.m_HeadGuid = uint64_t(6); relationship7.m_TailGuid = uint64_t(16862199137063532871U); timelineDecoder.CreateRelationship(relationship7); - ITimelineDecoder::Relationship relationship8; + arm::pipe::ITimelineDecoder::Relationship relationship8; relationship8.m_Guid = uint64_t(8); - relationship8.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship8.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship8.m_HeadGuid = uint64_t(7); relationship8.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship8); // Adding normalization layer - ITimelineDecoder::Entity entity0; + arm::pipe::ITimelineDecoder::Entity entity0; entity0.m_Guid = uint64_t(0); timelineDecoder.CreateEntity(entity0); - ITimelineDecoder::Label input; + arm::pipe::ITimelineDecoder::Label input; input.m_Guid = uint64_t(18179123836411086572U); input.m_Name = "input"; timelineDecoder.CreateLabel(input); - ITimelineDecoder::Relationship relationship9; + arm::pipe::ITimelineDecoder::Relationship relationship9; relationship9.m_Guid = uint64_t(9); - relationship9.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship9.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship9.m_HeadGuid = uint64_t(0); relationship9.m_TailGuid = uint64_t(18179123836411086572U); timelineDecoder.CreateRelationship(relationship9); - ITimelineDecoder::Relationship relationship10; + arm::pipe::ITimelineDecoder::Relationship relationship10; relationship10.m_Guid = uint64_t(10); - relationship10.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship10.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship10.m_HeadGuid = uint64_t(9); relationship10.m_TailGuid = uint64_t(10420554295983197538U); timelineDecoder.CreateRelationship(relationship10); - ITimelineDecoder::Relationship relationship11; + arm::pipe::ITimelineDecoder::Relationship relationship11; relationship11.m_Guid = uint64_t(11); - relationship11.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship11.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship11.m_HeadGuid = uint64_t(0); relationship11.m_TailGuid = uint64_t(14761340794127440397U); timelineDecoder.CreateRelationship(relationship11); - ITimelineDecoder::Relationship relationship12; + arm::pipe::ITimelineDecoder::Relationship relationship12; relationship12.m_Guid = uint64_t(12); - relationship12.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship12.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship12.m_HeadGuid = uint64_t(11); relationship12.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship12); - ITimelineDecoder::Relationship relationship13; + arm::pipe::ITimelineDecoder::Relationship relationship13; relationship13.m_Guid = uint64_t(13); - relationship13.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship13.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship13.m_HeadGuid = uint64_t(6); relationship13.m_TailGuid = uint64_t(0); timelineDecoder.CreateRelationship(relationship13); // Adding normalization layer - ITimelineDecoder::Entity entity1; + arm::pipe::ITimelineDecoder::Entity entity1; entity1.m_Guid = uint64_t(1); timelineDecoder.CreateEntity(entity1); - ITimelineDecoder::Label normalization; + arm::pipe::ITimelineDecoder::Label normalization; normalization.m_Guid = uint64_t(15955949569988957863U); normalization.m_Name = "normalization"; timelineDecoder.CreateLabel(normalization); - ITimelineDecoder::Relationship relationship14; + arm::pipe::ITimelineDecoder::Relationship relationship14; relationship14.m_Guid = uint64_t(14); - relationship14.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship14.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship14.m_HeadGuid = uint64_t(1); relationship14.m_TailGuid = uint64_t(15955949569988957863U); timelineDecoder.CreateRelationship(relationship14); - ITimelineDecoder::Relationship relationship15; + arm::pipe::ITimelineDecoder::Relationship relationship15; relationship15.m_Guid = uint64_t(15); - relationship15.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship15.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship15.m_HeadGuid = uint64_t(14); relationship15.m_TailGuid = uint64_t(10420554295983197538U); timelineDecoder.CreateRelationship(relationship15); - ITimelineDecoder::Relationship relationship16; + arm::pipe::ITimelineDecoder::Relationship relationship16; relationship16.m_Guid = uint64_t(16); - relationship16.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship16.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship16.m_HeadGuid = uint64_t(1); relationship16.m_TailGuid = uint64_t(14761340794127440397U); timelineDecoder.CreateRelationship(relationship16); - ITimelineDecoder::Relationship relationship17; + arm::pipe::ITimelineDecoder::Relationship relationship17; relationship17.m_Guid = uint64_t(17); - relationship17.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship17.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship17.m_HeadGuid = uint64_t(16); relationship17.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship17); - ITimelineDecoder::Relationship relationship18; + arm::pipe::ITimelineDecoder::Relationship relationship18; relationship18.m_Guid = uint64_t(18); - relationship18.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship18.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship18.m_HeadGuid = uint64_t(6); relationship18.m_TailGuid = uint64_t(1); timelineDecoder.CreateRelationship(relationship18); - ITimelineDecoder::Relationship relationship19; + arm::pipe::ITimelineDecoder::Relationship relationship19; relationship19.m_Guid = uint64_t(19); - relationship19.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship19.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship19.m_HeadGuid = uint64_t(0); relationship19.m_TailGuid = uint64_t(1); timelineDecoder.CreateRelationship(relationship19); - ITimelineDecoder::Relationship relationship20; + arm::pipe::ITimelineDecoder::Relationship relationship20; relationship20.m_Guid = uint64_t(20); - relationship20.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship20.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship20.m_HeadGuid = uint64_t(19); relationship20.m_TailGuid = uint64_t(15733717748792475675U); timelineDecoder.CreateRelationship(relationship20); - ITimelineDecoder::Relationship relationship21; + arm::pipe::ITimelineDecoder::Relationship relationship21; relationship21.m_Guid = uint64_t(21); - relationship21.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship21.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship21.m_HeadGuid = uint64_t(20); relationship21.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship21); - ITimelineDecoder::Entity entity22; + arm::pipe::ITimelineDecoder::Entity entity22; entity22.m_Guid = uint64_t(22); timelineDecoder.CreateEntity(entity22); - ITimelineDecoder::Relationship relationship23; + arm::pipe::ITimelineDecoder::Relationship relationship23; relationship23.m_Guid = uint64_t(23); - relationship23.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship23.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship23.m_HeadGuid = uint64_t(22); relationship23.m_TailGuid = uint64_t(15704252740552608110U); timelineDecoder.CreateRelationship(relationship23); - ITimelineDecoder::Relationship relationship24; + arm::pipe::ITimelineDecoder::Relationship relationship24; relationship24.m_Guid = uint64_t(24); - relationship24.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship24.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship24.m_HeadGuid = uint64_t(23); relationship24.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship24); - ITimelineDecoder::Label CpuRef; + arm::pipe::ITimelineDecoder::Label CpuRef; CpuRef.m_Guid = uint64_t(9690680943817437852U); CpuRef.m_Name = "CpuRef"; timelineDecoder.CreateLabel(CpuRef); - ITimelineDecoder::Relationship relationship25; + arm::pipe::ITimelineDecoder::Relationship relationship25; relationship25.m_Guid = uint64_t(25); - relationship25.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship25.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship25.m_HeadGuid = uint64_t(22); relationship25.m_TailGuid = uint64_t(9690680943817437852U); timelineDecoder.CreateRelationship(relationship25); - ITimelineDecoder::Relationship relationship26; + arm::pipe::ITimelineDecoder::Relationship relationship26; relationship26.m_Guid = uint64_t(26); - relationship26.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship26.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship26.m_HeadGuid = uint64_t(25); relationship26.m_TailGuid = uint64_t(10874037804557439415U); timelineDecoder.CreateRelationship(relationship26); - ITimelineDecoder::Relationship relationship27; + arm::pipe::ITimelineDecoder::Relationship relationship27; relationship27.m_Guid = uint64_t(27); - relationship27.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink ; + relationship27.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink ; relationship27.m_HeadGuid = uint64_t(1); relationship27.m_TailGuid = uint64_t(22); timelineDecoder.CreateRelationship(relationship27); // Adding output layer - ITimelineDecoder::Entity entity2; + arm::pipe::ITimelineDecoder::Entity entity2; entity2.m_Guid = uint64_t(2); timelineDecoder.CreateEntity(entity2); - ITimelineDecoder::Label output; + arm::pipe::ITimelineDecoder::Label output; output.m_Guid = uint64_t(18419179028513879730U); output.m_Name = "output"; timelineDecoder.CreateLabel(output); - ITimelineDecoder::Relationship relationship28; + arm::pipe::ITimelineDecoder::Relationship relationship28; relationship28.m_Guid = uint64_t(28); - relationship28.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship28.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship28.m_HeadGuid = uint64_t(2); relationship28.m_TailGuid = uint64_t(18419179028513879730U); timelineDecoder.CreateRelationship(relationship28); - ITimelineDecoder::Relationship relationship29; + arm::pipe::ITimelineDecoder::Relationship relationship29; relationship29.m_Guid = uint64_t(29); - relationship29.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship29.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship29.m_HeadGuid = uint64_t(28); relationship29.m_TailGuid = uint64_t(10420554295983197538U); timelineDecoder.CreateRelationship(relationship29); - ITimelineDecoder::Relationship relationship30; + arm::pipe::ITimelineDecoder::Relationship relationship30; relationship30.m_Guid = uint64_t(30); - relationship30.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship30.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship30.m_HeadGuid = uint64_t(2); relationship30.m_TailGuid = uint64_t(14761340794127440397U); timelineDecoder.CreateRelationship(relationship30); - ITimelineDecoder::Relationship relationship31; + arm::pipe::ITimelineDecoder::Relationship relationship31; relationship31.m_Guid = uint64_t(31); - relationship31.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship31.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship31.m_HeadGuid = uint64_t(30); relationship31.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship31); - ITimelineDecoder::Relationship relationship32; + arm::pipe::ITimelineDecoder::Relationship relationship32; relationship32.m_Guid = uint64_t(32); - relationship32.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship32.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship32.m_HeadGuid = uint64_t(6); relationship32.m_TailGuid = uint64_t(2); timelineDecoder.CreateRelationship(relationship32); - ITimelineDecoder::Relationship relationship33; + arm::pipe::ITimelineDecoder::Relationship relationship33; relationship33.m_Guid = uint64_t(33); - relationship33.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship33.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship33.m_HeadGuid = uint64_t(1); relationship33.m_TailGuid = uint64_t(2); timelineDecoder.CreateRelationship(relationship33); - ITimelineDecoder::Relationship relationship34; + arm::pipe::ITimelineDecoder::Relationship relationship34; relationship34.m_Guid = uint64_t(34); - relationship34.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship34.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship34.m_HeadGuid = uint64_t(33); relationship34.m_TailGuid = uint64_t(15733717748792475675U); timelineDecoder.CreateRelationship(relationship34); - ITimelineDecoder::Relationship relationship35; + arm::pipe::ITimelineDecoder::Relationship relationship35; relationship35.m_Guid = uint64_t(35); - relationship35.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship35.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship35.m_HeadGuid = uint64_t(34); relationship35.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship35); - ITimelineDecoder::Entity entity36; + arm::pipe::ITimelineDecoder::Entity entity36; entity36.m_Guid = uint64_t(36); timelineDecoder.CreateEntity(entity36); - ITimelineDecoder::Relationship relationship37; + arm::pipe::ITimelineDecoder::Relationship relationship37; relationship37.m_Guid = uint64_t(37); - relationship37.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship37.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship37.m_HeadGuid = uint64_t(36); relationship37.m_TailGuid = uint64_t(15704252740552608110U); timelineDecoder.CreateRelationship(relationship37); - ITimelineDecoder::Relationship relationship38; + arm::pipe::ITimelineDecoder::Relationship relationship38; relationship38.m_Guid = uint64_t(38); - relationship38.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship38.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship38.m_HeadGuid = uint64_t(37); relationship38.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship38); - ITimelineDecoder::Relationship relationship39; + arm::pipe::ITimelineDecoder::Relationship relationship39; relationship39.m_Guid = uint64_t(39); - relationship39.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship39.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship39.m_HeadGuid = uint64_t(36); relationship39.m_TailGuid = uint64_t(9690680943817437852U); timelineDecoder.CreateRelationship(relationship39); - ITimelineDecoder::Relationship relationship40; + arm::pipe::ITimelineDecoder::Relationship relationship40; relationship40.m_Guid = uint64_t(40); - relationship40.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship40.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship40.m_HeadGuid = uint64_t(39); relationship40.m_TailGuid = uint64_t(10874037804557439415U); timelineDecoder.CreateRelationship(relationship40); - ITimelineDecoder::Relationship relationship41; + arm::pipe::ITimelineDecoder::Relationship relationship41; relationship41.m_Guid = uint64_t(41); - relationship41.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship41.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship41.m_HeadGuid = uint64_t(0); relationship41.m_TailGuid = uint64_t(36); timelineDecoder.CreateRelationship(relationship41); - ITimelineDecoder::Entity entity42; + arm::pipe::ITimelineDecoder::Entity entity42; entity42.m_Guid = uint64_t(42); timelineDecoder.CreateEntity(entity42); - ITimelineDecoder::Relationship relationship43; + arm::pipe::ITimelineDecoder::Relationship relationship43; relationship43.m_Guid = uint64_t(43); - relationship43.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship43.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship43.m_HeadGuid = uint64_t(42); relationship43.m_TailGuid = uint64_t(15704252740552608110U); timelineDecoder.CreateRelationship(relationship43); - ITimelineDecoder::Relationship relationship44; + arm::pipe::ITimelineDecoder::Relationship relationship44; relationship44.m_Guid = uint64_t(44); - relationship44.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship44.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship44.m_HeadGuid = uint64_t(43); relationship44.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship44); - ITimelineDecoder::Relationship relationship45; + arm::pipe::ITimelineDecoder::Relationship relationship45; relationship45.m_Guid = uint64_t(45); - relationship45.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship45.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship45.m_HeadGuid = uint64_t(42); relationship45.m_TailGuid = uint64_t(9690680943817437852U); timelineDecoder.CreateRelationship(relationship45); - ITimelineDecoder::Relationship relationship46; + arm::pipe::ITimelineDecoder::Relationship relationship46; relationship46.m_Guid = uint64_t(46); - relationship46.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship46.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship46.m_HeadGuid = uint64_t(45); relationship46.m_TailGuid = uint64_t(10874037804557439415U); timelineDecoder.CreateRelationship(relationship46); - ITimelineDecoder::Relationship relationship47; + arm::pipe::ITimelineDecoder::Relationship relationship47; relationship47.m_Guid = uint64_t(47); - relationship47.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship47.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship47.m_HeadGuid = uint64_t(2); relationship47.m_TailGuid = uint64_t(42); timelineDecoder.CreateRelationship(relationship47); - ITimelineDecoder::Entity entity48; + arm::pipe::ITimelineDecoder::Entity entity48; entity48.m_Guid = uint64_t(48); timelineDecoder.CreateEntity(entity48); - ITimelineDecoder::Relationship relationship49; + arm::pipe::ITimelineDecoder::Relationship relationship49; relationship49.m_Guid = uint64_t(49); - relationship49.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship49.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship49.m_HeadGuid = uint64_t(48); relationship49.m_TailGuid = uint64_t(15026600058430441282U); timelineDecoder.CreateRelationship(relationship49); - ITimelineDecoder::Relationship relationship50; + arm::pipe::ITimelineDecoder::Relationship relationship50; relationship50.m_Guid = uint64_t(50); - relationship50.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship50.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship50.m_HeadGuid = uint64_t(49); relationship50.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship50); - ITimelineDecoder::Relationship relationship51; + arm::pipe::ITimelineDecoder::Relationship relationship51; relationship51.m_Guid = uint64_t(51); - relationship51.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship51.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship51.m_HeadGuid = uint64_t(6); relationship51.m_TailGuid = uint64_t(48); timelineDecoder.CreateRelationship(relationship51); - ITimelineDecoder::Relationship relationship53; + arm::pipe::ITimelineDecoder::Relationship relationship53; relationship53.m_Guid = uint64_t(53); - relationship53.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship53.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship53.m_HeadGuid = uint64_t(48); relationship53.m_TailGuid = uint64_t(52); timelineDecoder.CreateRelationship(relationship53); - ITimelineDecoder::Relationship relationship54; + arm::pipe::ITimelineDecoder::Relationship relationship54; relationship54.m_Guid = uint64_t(54); - relationship54.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship54.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship54.m_HeadGuid = uint64_t(52); relationship54.m_TailGuid = uint64_t(17170418158534996719U); timelineDecoder.CreateRelationship(relationship54); - ITimelineDecoder::Entity entity55; + arm::pipe::ITimelineDecoder::Entity entity55; entity55.m_Guid = uint64_t(55); timelineDecoder.CreateEntity(entity55); - ITimelineDecoder::Relationship relationship56; + arm::pipe::ITimelineDecoder::Relationship relationship56; relationship56.m_Guid = uint64_t(56); - relationship56.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship56.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship56.m_HeadGuid = uint64_t(55); relationship56.m_TailGuid = uint64_t(10172155312650606003U); timelineDecoder.CreateRelationship(relationship56); - ITimelineDecoder::Relationship relationship57; + arm::pipe::ITimelineDecoder::Relationship relationship57; relationship57.m_Guid = uint64_t(57); - relationship57.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship57.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship57.m_HeadGuid = uint64_t(56); relationship57.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship57); - ITimelineDecoder::Relationship relationship58; + arm::pipe::ITimelineDecoder::Relationship relationship58; relationship58.m_Guid = uint64_t(58); - relationship58.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship58.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship58.m_HeadGuid = uint64_t(48); relationship58.m_TailGuid = uint64_t(55); timelineDecoder.CreateRelationship(relationship58); - ITimelineDecoder::Relationship relationship59; + arm::pipe::ITimelineDecoder::Relationship relationship59; relationship59.m_Guid = uint64_t(59); - relationship59.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship59.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship59.m_HeadGuid = uint64_t(36); relationship59.m_TailGuid = uint64_t(55); timelineDecoder.CreateRelationship(relationship59); - ITimelineDecoder::Event event60; + arm::pipe::ITimelineDecoder::Event event60; event60.m_Guid = uint64_t(60); event60.m_TimeStamp = uint64_t(96557081111036); event60.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event60); - ITimelineDecoder::Relationship relationship61; + arm::pipe::ITimelineDecoder::Relationship relationship61; relationship61.m_Guid = uint64_t(61); - relationship61.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship61.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship61.m_HeadGuid = uint64_t(55); relationship61.m_TailGuid = uint64_t(60); timelineDecoder.CreateRelationship(relationship61); - ITimelineDecoder::Relationship relationship62; + arm::pipe::ITimelineDecoder::Relationship relationship62; relationship62.m_Guid = uint64_t(62); - relationship62.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship62.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship62.m_HeadGuid = uint64_t(60); relationship62.m_TailGuid = uint64_t(17170418158534996719U); timelineDecoder.CreateRelationship(relationship62); - ITimelineDecoder::Event event63; + arm::pipe::ITimelineDecoder::Event event63; event63.m_Guid = uint64_t(63); event63.m_TimeStamp = uint64_t(96557081149730); event63.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event63); - ITimelineDecoder::Relationship relationship64; + arm::pipe::ITimelineDecoder::Relationship relationship64; relationship64.m_Guid = uint64_t(61); - relationship64.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship64.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship64.m_HeadGuid = uint64_t(55); relationship64.m_TailGuid = uint64_t(63); timelineDecoder.CreateRelationship(relationship64); - ITimelineDecoder::Relationship relationship65; + arm::pipe::ITimelineDecoder::Relationship relationship65; relationship65.m_Guid = uint64_t(62); - relationship65.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship65.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship65.m_HeadGuid = uint64_t(63); relationship65.m_TailGuid = uint64_t(10812061579584851344U); timelineDecoder.CreateRelationship(relationship65); - ITimelineDecoder::Entity entity66; + arm::pipe::ITimelineDecoder::Entity entity66; entity66.m_Guid = uint64_t(66); timelineDecoder.CreateEntity(entity66); - ITimelineDecoder::Relationship relationship67; + arm::pipe::ITimelineDecoder::Relationship relationship67; relationship67.m_Guid = uint64_t(67); - relationship67.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship67.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship67.m_HeadGuid = uint64_t(66); relationship67.m_TailGuid = uint64_t(10172155312650606003U); timelineDecoder.CreateRelationship(relationship67); - ITimelineDecoder::Relationship relationship68; + arm::pipe::ITimelineDecoder::Relationship relationship68; relationship68.m_Guid = uint64_t(68); - relationship68.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship68.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship68.m_HeadGuid = uint64_t(67); relationship68.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship68); - ITimelineDecoder::Relationship relationship69; + arm::pipe::ITimelineDecoder::Relationship relationship69; relationship69.m_Guid = uint64_t(69); - relationship69.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship69.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship69.m_HeadGuid = uint64_t(48); relationship69.m_TailGuid = uint64_t(66); timelineDecoder.CreateRelationship(relationship69); - ITimelineDecoder::Relationship relationship70; + arm::pipe::ITimelineDecoder::Relationship relationship70; relationship70.m_Guid = uint64_t(70); - relationship70.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship70.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship70.m_HeadGuid = uint64_t(22); relationship70.m_TailGuid = uint64_t(66); timelineDecoder.CreateRelationship(relationship70); - ITimelineDecoder::Event event71; + arm::pipe::ITimelineDecoder::Event event71; event71.m_Guid = uint64_t(71); event71.m_TimeStamp = uint64_t(96557081156464); event71.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event71); - ITimelineDecoder::Relationship relationship72; + arm::pipe::ITimelineDecoder::Relationship relationship72; relationship72.m_Guid = uint64_t(72); - relationship72.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship72.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship72.m_HeadGuid = uint64_t(66); relationship72.m_TailGuid = uint64_t(71); timelineDecoder.CreateRelationship(relationship72); - ITimelineDecoder::Relationship relationship73; + arm::pipe::ITimelineDecoder::Relationship relationship73; relationship73.m_Guid = uint64_t(73); - relationship73.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship73.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship73.m_HeadGuid = uint64_t(71); relationship73.m_TailGuid = uint64_t(17170418158534996719U); timelineDecoder.CreateRelationship(relationship73); - ITimelineDecoder::Event event74; + arm::pipe::ITimelineDecoder::Event event74; event74.m_Guid = uint64_t(74); event74.m_TimeStamp = uint64_t(96557081220825); event74.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event74); - ITimelineDecoder::Relationship relationship75; + arm::pipe::ITimelineDecoder::Relationship relationship75; relationship75.m_Guid = uint64_t(75); - relationship75.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship75.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship75.m_HeadGuid = uint64_t(66); relationship75.m_TailGuid = uint64_t(74); timelineDecoder.CreateRelationship(relationship75); - ITimelineDecoder::Relationship relationship76; + arm::pipe::ITimelineDecoder::Relationship relationship76; relationship76.m_Guid = uint64_t(76); - relationship76.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship76.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship76.m_HeadGuid = uint64_t(74); relationship76.m_TailGuid = uint64_t(10812061579584851344U); timelineDecoder.CreateRelationship(relationship76); - ITimelineDecoder::Entity entity77; + arm::pipe::ITimelineDecoder::Entity entity77; entity77.m_Guid = uint64_t(77); timelineDecoder.CreateEntity(entity77); - ITimelineDecoder::Relationship relationship78; + arm::pipe::ITimelineDecoder::Relationship relationship78; relationship78.m_Guid = uint64_t(78); - relationship78.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship78.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship78.m_HeadGuid = uint64_t(77); relationship78.m_TailGuid = uint64_t(10172155312650606003U); timelineDecoder.CreateRelationship(relationship78); - ITimelineDecoder::Relationship relationship79; + arm::pipe::ITimelineDecoder::Relationship relationship79; relationship79.m_Guid = uint64_t(79); - relationship79.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink; + relationship79.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink; relationship79.m_HeadGuid = uint64_t(78); relationship79.m_TailGuid = uint64_t(14196220359693045352U); timelineDecoder.CreateRelationship(relationship79); - ITimelineDecoder::Relationship relationship80; + arm::pipe::ITimelineDecoder::Relationship relationship80; relationship80.m_Guid = uint64_t(80); - relationship80.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship80.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship80.m_HeadGuid = uint64_t(48); relationship80.m_TailGuid = uint64_t(77); timelineDecoder.CreateRelationship(relationship80); - ITimelineDecoder::Relationship relationship81; + arm::pipe::ITimelineDecoder::Relationship relationship81; relationship81.m_Guid = uint64_t(81); - relationship81.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink; + relationship81.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink; relationship81.m_HeadGuid = uint64_t(42); relationship81.m_TailGuid = uint64_t(77); timelineDecoder.CreateRelationship(relationship81); - ITimelineDecoder::Event event82; + arm::pipe::ITimelineDecoder::Event event82; event82.m_Guid = uint64_t(82); event82.m_TimeStamp = uint64_t(96557081227643); event82.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event82); - ITimelineDecoder::Relationship relationship83; + arm::pipe::ITimelineDecoder::Relationship relationship83; relationship83.m_Guid = uint64_t(83); - relationship83.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship83.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship83.m_HeadGuid = uint64_t(77); relationship83.m_TailGuid = uint64_t(82); timelineDecoder.CreateRelationship(relationship83); - ITimelineDecoder::Relationship relationship84; + arm::pipe::ITimelineDecoder::Relationship relationship84; relationship84.m_Guid = uint64_t(84); - relationship84.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship84.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship84.m_HeadGuid = uint64_t(82); relationship84.m_TailGuid = uint64_t(17170418158534996719U); timelineDecoder.CreateRelationship(relationship84); - ITimelineDecoder::Event event85; + arm::pipe::ITimelineDecoder::Event event85; event85.m_Guid = uint64_t(85); event85.m_TimeStamp = uint64_t(96557081240332); event85.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event85); - ITimelineDecoder::Relationship relationship86; + arm::pipe::ITimelineDecoder::Relationship relationship86; relationship86.m_Guid = uint64_t(86); - relationship86.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship86.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship86.m_HeadGuid = uint64_t(77); relationship86.m_TailGuid = uint64_t(85); timelineDecoder.CreateRelationship(relationship86); - ITimelineDecoder::Relationship relationship87; + arm::pipe::ITimelineDecoder::Relationship relationship87; relationship87.m_Guid = uint64_t(87); - relationship87.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship87.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship87.m_HeadGuid = uint64_t(85); relationship87.m_TailGuid = uint64_t(10812061579584851344U); timelineDecoder.CreateRelationship(relationship87); - ITimelineDecoder::Event event88; + arm::pipe::ITimelineDecoder::Event event88; event88.m_Guid = uint64_t(88); event88.m_TimeStamp = uint64_t(96557081243146); event88.m_ThreadId = uint64_t(140522431862592); timelineDecoder.CreateEvent(event88); - ITimelineDecoder::Relationship relationship89; + arm::pipe::ITimelineDecoder::Relationship relationship89; relationship89.m_Guid = uint64_t(89); - relationship89.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink; + relationship89.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink; relationship89.m_HeadGuid = uint64_t(48); relationship89.m_TailGuid = uint64_t(88); timelineDecoder.CreateRelationship(relationship89); - ITimelineDecoder::Relationship relationship90; + arm::pipe::ITimelineDecoder::Relationship relationship90; relationship90.m_Guid = uint64_t(90); - relationship90.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink; + relationship90.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink; relationship90.m_HeadGuid = uint64_t(88); relationship90.m_TailGuid = uint64_t(10812061579584851344U); timelineDecoder.CreateRelationship(relationship90); diff --git a/src/timelineDecoder/tests/TimelineTests.cpp b/src/timelineDecoder/tests/TimelineTests.cpp deleted file mode 100644 index ceb955d131..0000000000 --- a/src/timelineDecoder/tests/TimelineTests.cpp +++ /dev/null @@ -1,369 +0,0 @@ -// -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include <TimelineCaptureCommandHandler.hpp> -#include <TimelineDirectoryCaptureCommandHandler.hpp> -#include <TimelineDecoder.hpp> - -#include <CommandHandlerFunctor.hpp> -#include <Threads.hpp> -#include <ProfilingService.hpp> -#include <PacketBuffer.hpp> -#include <TimelinePacketWriterFactory.hpp> - -#include <boost/test/test_tools.hpp> -#include <boost/test/unit_test_suite.hpp> - -BOOST_AUTO_TEST_SUITE(TimelineDecoderTests) - -using namespace armnn; -using namespace timelinedecoder; - -void SendTimelinePacketToCommandHandler(const unsigned char* packetBuffer, - profiling::CommandHandlerFunctor &CommandHandler) -{ - uint32_t uint32_t_size = sizeof(uint32_t); - unsigned int offset = 0; - - uint32_t header[2]; - header[0] = profiling::ReadUint32(packetBuffer, offset); - offset += uint32_t_size; - header[1] = profiling::ReadUint32(packetBuffer, offset); - offset += uint32_t_size; - uint32_t PacketDataLength = header[1] & 0x00FFFFFF; - - auto uniquePacketData = std::make_unique<unsigned char[]>(PacketDataLength); - std::memcpy(uniquePacketData.get(), packetBuffer + offset, PacketDataLength); - - armnn::profiling::Packet packet(header[0], PacketDataLength, uniquePacketData); - - BOOST_CHECK(std::memcmp(packetBuffer + offset, packet.GetData(), packet.GetLength()) == 0); - - CommandHandler(packet); -} - -void PushEntity(TimelineDecoder::Model& model, const ITimelineDecoder::Entity entity) -{ - model.m_Entities.emplace_back(entity); -} - -void PushEventClass(TimelineDecoder::Model& model, const ITimelineDecoder::EventClass eventClass) -{ - model.m_EventClasses.emplace_back(eventClass); -} - -void PushEvent(TimelineDecoder::Model& model, const ITimelineDecoder::Event event) -{ - model.m_Events.emplace_back(event); -} - -void PushLabel(TimelineDecoder::Model& model, const ITimelineDecoder::Label label) -{ - model.m_Labels.emplace_back(label); -} - -void PushRelationship(TimelineDecoder::Model& model, const ITimelineDecoder::Relationship relationship) -{ - model.m_Relationships.emplace_back(relationship); -} - -BOOST_AUTO_TEST_CASE(TimelineDirectoryTest) -{ - uint32_t uint8_t_size = sizeof(uint8_t); - uint32_t uint32_t_size = sizeof(uint32_t); - uint32_t uint64_t_size = sizeof(uint64_t); - - profiling::BufferManager bufferManager(5); - profiling::TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); - - std::unique_ptr<profiling::ISendTimelinePacket> sendTimelinePacket = - timelinePacketWriterFactory.GetSendTimelinePacket(); - - profiling::PacketVersionResolver packetVersionResolver; - - TimelineDecoder timelineDecoder; - TimelineCaptureCommandHandler timelineCaptureCommandHandler( - 1, 1, packetVersionResolver.ResolvePacketVersion(1, 1).GetEncodedValue(), timelineDecoder); - - TimelineDirectoryCaptureCommandHandler timelineDirectoryCaptureCommandHandler( - 1, 0, packetVersionResolver.ResolvePacketVersion(1, 0).GetEncodedValue(), - timelineCaptureCommandHandler, true); - - sendTimelinePacket->SendTimelineMessageDirectoryPackage(); - sendTimelinePacket->Commit(); - - std::vector<profiling::SwTraceMessage> swTraceBufferMessages; - - unsigned int offset = uint32_t_size * 2; - - std::unique_ptr<profiling::IPacketBuffer> packetBuffer = bufferManager.GetReadableBuffer(); - - uint8_t readStreamVersion = ReadUint8(packetBuffer, offset); - BOOST_CHECK(readStreamVersion == 4); - offset += uint8_t_size; - uint8_t readPointerBytes = ReadUint8(packetBuffer, offset); - BOOST_CHECK(readPointerBytes == uint64_t_size); - offset += uint8_t_size; - uint8_t readThreadIdBytes = ReadUint8(packetBuffer, offset); - BOOST_CHECK(readThreadIdBytes == armnn::profiling::ThreadIdSize); - offset += uint8_t_size; - - uint32_t declarationSize = profiling::ReadUint32(packetBuffer, offset); - offset += uint32_t_size; - for(uint32_t i = 0; i < declarationSize; ++i) - { - swTraceBufferMessages.push_back(profiling::ReadSwTraceMessage(packetBuffer->GetReadableData(), - offset, - packetBuffer->GetSize())); - } - - SendTimelinePacketToCommandHandler(packetBuffer->GetReadableData(), timelineDirectoryCaptureCommandHandler); - - for(uint32_t index = 0; index < declarationSize; ++index) - { - profiling::SwTraceMessage& bufferMessage = swTraceBufferMessages[index]; - profiling::SwTraceMessage& handlerMessage = timelineDirectoryCaptureCommandHandler.m_SwTraceMessages[index]; - - BOOST_CHECK(bufferMessage.m_Name == handlerMessage.m_Name); - BOOST_CHECK(bufferMessage.m_UiName == handlerMessage.m_UiName); - BOOST_CHECK(bufferMessage.m_Id == handlerMessage.m_Id); - - BOOST_CHECK(bufferMessage.m_ArgTypes.size() == handlerMessage.m_ArgTypes.size()); - for(uint32_t i = 0; i < bufferMessage.m_ArgTypes.size(); ++i) - { - BOOST_CHECK(bufferMessage.m_ArgTypes[i] == handlerMessage.m_ArgTypes[i]); - } - - BOOST_CHECK(bufferMessage.m_ArgNames.size() == handlerMessage.m_ArgNames.size()); - for(uint32_t i = 0; i < bufferMessage.m_ArgNames.size(); ++i) - { - BOOST_CHECK(bufferMessage.m_ArgNames[i] == handlerMessage.m_ArgNames[i]); - } - } -} - -BOOST_AUTO_TEST_CASE(TimelineCaptureTest) -{ - profiling::BufferManager bufferManager(50); - profiling::TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); - - std::unique_ptr<profiling::ISendTimelinePacket> sendTimelinePacket = - timelinePacketWriterFactory.GetSendTimelinePacket(); - - profiling::PacketVersionResolver packetVersionResolver; - - TimelineDecoder timelineDecoder; - const TimelineDecoder::Model& model = timelineDecoder.GetModel(); - - - TimelineCaptureCommandHandler timelineCaptureCommandHandler( - 1, 1, packetVersionResolver.ResolvePacketVersion(1, 1).GetEncodedValue(), timelineDecoder, - armnn::profiling::ThreadIdSize); - - using Status = ITimelineDecoder::TimelineStatus; - BOOST_CHECK(timelineDecoder.SetEntityCallback(PushEntity) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetEventClassCallback(PushEventClass) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetEventCallback(PushEvent) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetLabelCallback(PushLabel) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetRelationshipCallback(PushRelationship) == Status::TimelineStatus_Success); - - const uint64_t entityGuid = 111111u; - const uint64_t eventClassGuid = 22222u; - const uint64_t eventClassNameGuid = 22322u; - const uint64_t timestamp = 33333u; - const uint64_t eventGuid = 44444u; - - const int threadId = armnnUtils::Threads::GetCurrentThreadId(); - - // need to do a bit of work here to extract the value from threadId - unsigned char* uCharThreadId = new unsigned char[armnn::profiling::ThreadIdSize]();; - uint64_t uint64ThreadId; - - profiling::WriteBytes(uCharThreadId, 0, &threadId, armnn::profiling::ThreadIdSize); - - if (armnn::profiling::ThreadIdSize == 4) - { - uint64ThreadId = profiling::ReadUint32(uCharThreadId, 0); - } - else if (armnn::profiling::ThreadIdSize == 8) - { - uint64ThreadId = profiling::ReadUint64(uCharThreadId, 0); - } - delete[] uCharThreadId; - - const uint64_t labelGuid = 66666u; - std::string labelName = "test_label"; - - const uint64_t relationshipGuid = 77777u; - const uint64_t headGuid = 888888u; - const uint64_t tailGuid = 999999u; - - for (int i = 0; i < 10; ++i) - { - // Send entity - sendTimelinePacket->SendTimelineEntityBinaryPacket(entityGuid); - sendTimelinePacket->Commit(); - SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), - timelineCaptureCommandHandler); - - // Send event class - sendTimelinePacket->SendTimelineEventClassBinaryPacket(eventClassGuid, eventClassNameGuid); - sendTimelinePacket->Commit(); - SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), - timelineCaptureCommandHandler); - - // Send event - sendTimelinePacket->SendTimelineEventBinaryPacket(timestamp, threadId, eventGuid); - sendTimelinePacket->Commit(); - SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), - timelineCaptureCommandHandler); - - // Send label - sendTimelinePacket->SendTimelineLabelBinaryPacket(labelGuid, labelName); - sendTimelinePacket->Commit(); - SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), - timelineCaptureCommandHandler); - - // Send relationship - profiling::ProfilingRelationshipType relationshipType = profiling::ProfilingRelationshipType::DataLink; - sendTimelinePacket->SendTimelineRelationshipBinaryPacket(relationshipType, - relationshipGuid, - headGuid, - tailGuid, - 0); - sendTimelinePacket->Commit(); - SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), - timelineCaptureCommandHandler); - } - - for (unsigned long i = 0; i < 10; ++i) - { - BOOST_CHECK(model.m_Entities[i].m_Guid == entityGuid); - - BOOST_CHECK(model.m_EventClasses[i].m_Guid == eventClassGuid); - - BOOST_CHECK(model.m_Events[i].m_TimeStamp == timestamp); - BOOST_CHECK(model.m_Events[i].m_ThreadId == uint64ThreadId); - BOOST_CHECK(model.m_Events[i].m_Guid == eventGuid); - - BOOST_CHECK(model.m_Labels[i].m_Guid == labelGuid); - BOOST_CHECK(model.m_Labels[i].m_Name == labelName); - - BOOST_CHECK(model.m_Relationships[i].m_RelationshipType == ITimelineDecoder::RelationshipType::DataLink); - BOOST_CHECK(model.m_Relationships[i].m_Guid == relationshipGuid); - BOOST_CHECK(model.m_Relationships[i].m_HeadGuid == headGuid); - BOOST_CHECK(model.m_Relationships[i].m_TailGuid == tailGuid); - } -} - -BOOST_AUTO_TEST_CASE(TimelineCaptureTestMultipleStringsInBuffer) -{ - profiling::BufferManager bufferManager(50); - profiling::TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); - - std::unique_ptr<profiling::ISendTimelinePacket> sendTimelinePacket = - timelinePacketWriterFactory.GetSendTimelinePacket(); - - profiling::PacketVersionResolver packetVersionResolver; - - TimelineDecoder timelineDecoder; - const TimelineDecoder::Model& model = timelineDecoder.GetModel(); - - TimelineCaptureCommandHandler timelineCaptureCommandHandler( - 1, 1, packetVersionResolver.ResolvePacketVersion(1, 1).GetEncodedValue(), timelineDecoder, - armnn::profiling::ThreadIdSize); - - using Status = ITimelineDecoder::TimelineStatus; - BOOST_CHECK(timelineDecoder.SetEntityCallback(PushEntity) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetEventClassCallback(PushEventClass) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetEventCallback(PushEvent) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetLabelCallback(PushLabel) == Status::TimelineStatus_Success); - BOOST_CHECK(timelineDecoder.SetRelationshipCallback(PushRelationship) == Status::TimelineStatus_Success); - - const uint64_t entityGuid = 111111u; - const uint64_t eventClassGuid = 22222u; - const uint64_t eventClassNameGuid = 22322u; - const uint64_t timestamp = 33333u; - const uint64_t eventGuid = 44444u; - - const int threadId = armnnUtils::Threads::GetCurrentThreadId(); - - // need to do a bit of work here to extract the value from threadId - unsigned char* uCharThreadId = new unsigned char[armnn::profiling::ThreadIdSize](); - uint64_t uint64ThreadId; - - profiling::WriteBytes(uCharThreadId, 0, &threadId, armnn::profiling::ThreadIdSize); - - if ( armnn::profiling::ThreadIdSize == 4 ) - { - uint64ThreadId = profiling::ReadUint32(uCharThreadId, 0); - } - else if ( armnn::profiling::ThreadIdSize == 8 ) - { - uint64ThreadId = profiling::ReadUint64(uCharThreadId, 0); - } - delete[] uCharThreadId; - - const uint64_t labelGuid = 66666u; - std::string labelName = "test_label"; - std::string labelName2 = "test_label2"; - std::string labelName3 = "test_label32"; - - const uint64_t relationshipGuid = 77777u; - const uint64_t headGuid = 888888u; - const uint64_t tailGuid = 999999u; - - // Check with multiple messages in the same buffer - for ( int i = 0; i < 9; ++i ) - { - // Send entity - sendTimelinePacket->SendTimelineEntityBinaryPacket(entityGuid); - // Send event class - sendTimelinePacket->SendTimelineEventClassBinaryPacket(eventClassGuid, eventClassNameGuid); - // Send event - sendTimelinePacket->SendTimelineEventBinaryPacket(timestamp, threadId, eventGuid); - // Send label - sendTimelinePacket->SendTimelineLabelBinaryPacket(labelGuid, labelName); - sendTimelinePacket->SendTimelineLabelBinaryPacket(labelGuid, labelName2); - sendTimelinePacket->SendTimelineLabelBinaryPacket(labelGuid, labelName3); - // Send relationship - profiling::ProfilingRelationshipType relationshipType = profiling::ProfilingRelationshipType::DataLink; - sendTimelinePacket->SendTimelineRelationshipBinaryPacket(relationshipType, - relationshipGuid, - headGuid, - tailGuid, - 0); - } - - sendTimelinePacket->Commit(); - SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), - timelineCaptureCommandHandler); - - for ( unsigned long i = 0; i < 9; ++i ) - { - BOOST_CHECK(model.m_Entities[i].m_Guid == entityGuid); - - BOOST_CHECK(model.m_EventClasses[i].m_Guid == eventClassGuid); - - BOOST_CHECK(model.m_Labels[i].m_Guid == labelGuid); - - BOOST_CHECK(model.m_Events[i].m_TimeStamp == timestamp); - BOOST_CHECK(model.m_Events[i].m_ThreadId == uint64ThreadId); - BOOST_CHECK(model.m_Events[i].m_Guid == eventGuid); - - BOOST_CHECK(model.m_Relationships[i].m_RelationshipType == ITimelineDecoder::RelationshipType::DataLink); - BOOST_CHECK(model.m_Relationships[i].m_Guid == relationshipGuid); - BOOST_CHECK(model.m_Relationships[i].m_HeadGuid == headGuid); - BOOST_CHECK(model.m_Relationships[i].m_TailGuid == tailGuid); - } - for ( unsigned long i = 0; i < 9; i += 3 ) - { - BOOST_CHECK(model.m_Labels[i].m_Name == labelName); - BOOST_CHECK(model.m_Labels[i+1].m_Name == labelName2); - BOOST_CHECK(model.m_Labels[i+2].m_Name == labelName3); - } -} - -BOOST_AUTO_TEST_SUITE_END() |