From 0a336dce464a822bbd9563b5dc021a37c6671515 Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Mon, 11 May 2020 15:39:58 +0100 Subject: IVGCVSW-4734 Add an Attribute label guid to the relationship message to reduce traffic Signed-off-by: Finn Williams Change-Id: Ia55c52c12fe3d30eb47bc42c932a33c620dc9197 --- src/armnn/test/RuntimeTests.cpp | 221 ++------------ src/profiling/LabelsAndEventClasses.cpp | 2 + src/profiling/LabelsAndEventClasses.hpp | 2 + src/profiling/ProfilingUtils.cpp | 7 +- src/profiling/ProfilingUtils.hpp | 1 + src/profiling/SendTimelinePacket.cpp | 6 +- src/profiling/SendTimelinePacket.hpp | 3 +- src/profiling/TimelineUtilityMethods.cpp | 43 +-- src/profiling/test/ProfilingTestUtils.cpp | 329 ++++----------------- src/profiling/test/ProfilingTestUtils.hpp | 1 + src/profiling/test/TimelinePacketTests.cpp | 45 ++- src/profiling/test/TimelineUtilityMethodsTests.cpp | 61 +--- .../TimelineCaptureCommandHandler.cpp | 4 + src/timelineDecoder/tests/TimelineTests.cpp | 6 +- 14 files changed, 178 insertions(+), 553 deletions(-) (limited to 'src') diff --git a/src/armnn/test/RuntimeTests.cpp b/src/armnn/test/RuntimeTests.cpp index c4a96263dd..ba921d326c 100644 --- a/src/armnn/test/RuntimeTests.cpp +++ b/src/armnn/test/RuntimeTests.cpp @@ -414,7 +414,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) BOOST_CHECK(readableBuffer != nullptr); unsigned int size = readableBuffer->GetSize(); - BOOST_CHECK(size == 1068); + BOOST_CHECK(size == 852); const unsigned char* readableData = readableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -422,7 +422,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) unsigned int offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 1060); + VerifyTimelineHeaderBinary(readableData, offset, 844); // Post-optimisation network // Network entity @@ -434,13 +434,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), optNetGuid, LabelsAndEventClasses::NETWORK_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -457,13 +450,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), input->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::NAME_GUID, readableData, offset); @@ -473,13 +459,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), input->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -489,6 +468,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), optNetGuid, input->GetGuid(), + EmptyOptional(), readableData, offset); @@ -504,13 +484,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), normalize->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::NAME_GUID, readableData, offset); @@ -520,13 +493,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), normalize->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -536,6 +502,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), optNetGuid, normalize->GetGuid(), + EmptyOptional(), readableData, offset); @@ -544,6 +511,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), input->GetGuid(), normalize->GetGuid(), + EmptyOptional(), readableData, offset); @@ -552,13 +520,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::CONNECTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -570,13 +531,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, @@ -589,13 +543,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, @@ -607,6 +554,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), normalize->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -622,13 +570,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), output->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::NAME_GUID, readableData, offset); @@ -638,13 +579,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), output->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -654,6 +588,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), optNetGuid, output->GetGuid(), + EmptyOptional(), readableData, offset); @@ -662,6 +597,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), normalize->GetGuid(), output->GetGuid(), + EmptyOptional(), readableData, offset); @@ -670,13 +606,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::CONNECTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -713,7 +642,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Validate input workload data size = inputReadableBuffer->GetSize(); - BOOST_CHECK(size == 204); + BOOST_CHECK(size == 164); readableData = inputReadableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -721,7 +650,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 196); + VerifyTimelineHeaderBinary(readableData, offset, 156); // Input workload // Input workload entity @@ -730,13 +659,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, @@ -749,13 +671,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, @@ -767,6 +682,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), input->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -774,7 +690,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Validate output workload data size = outputReadableBuffer->GetSize(); - BOOST_CHECK(size == 204); + BOOST_CHECK(size == 164); readableData = outputReadableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -782,7 +698,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 196); + VerifyTimelineHeaderBinary(readableData, offset, 156); // Output workload // Output workload entity @@ -791,13 +707,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, @@ -810,13 +719,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, @@ -828,6 +730,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), output->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -835,7 +738,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Validate inference data size = inferenceReadableBuffer->GetSize(); - BOOST_CHECK(size == 1208 + 8 * ThreadIdSize); + BOOST_CHECK(size == 976 + 8 * ThreadIdSize); readableData = inferenceReadableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -843,7 +746,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 1200 + 8 * ThreadIdSize); + VerifyTimelineHeaderBinary(readableData, offset, 968 + 8 * ThreadIdSize); // Inference timeline trace // Inference entity @@ -854,13 +757,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::INFERENCE_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -870,6 +766,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), optNetGuid, EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -880,13 +777,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Inference - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -903,13 +793,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -919,6 +802,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -927,6 +811,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -937,13 +822,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Input workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -957,13 +835,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Input workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -979,13 +850,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -995,6 +859,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1003,6 +868,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1013,13 +879,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Normalize workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -1033,13 +892,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Normalize workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -1055,13 +907,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -1071,6 +916,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1079,6 +925,7 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1089,19 +936,13 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Output workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, readableData, offset); + // End of Normalize workload execution life // Event packet - timeline, threadId, eventGuid VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); @@ -1109,13 +950,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Output workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -1129,13 +963,6 @@ BOOST_AUTO_TEST_CASE(ProfilingEnableCpuRef) // Inference - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, diff --git a/src/profiling/LabelsAndEventClasses.cpp b/src/profiling/LabelsAndEventClasses.cpp index fa89f1c0fa..42b4a9dae2 100644 --- a/src/profiling/LabelsAndEventClasses.cpp +++ b/src/profiling/LabelsAndEventClasses.cpp @@ -14,11 +14,13 @@ namespace profiling ProfilingGuidGenerator LabelsAndEventClasses::m_GuidGenerator; // Labels (string value + GUID) +std::string LabelsAndEventClasses::EMPTY_LABEL(""); std::string LabelsAndEventClasses::NAME_LABEL("name"); std::string LabelsAndEventClasses::TYPE_LABEL("type"); std::string LabelsAndEventClasses::INDEX_LABEL("index"); std::string LabelsAndEventClasses::BACKENDID_LABEL("backendId"); +ProfilingStaticGuid LabelsAndEventClasses::EMPTY_GUID(0); ProfilingStaticGuid LabelsAndEventClasses::NAME_GUID( m_GuidGenerator.GenerateStaticId(LabelsAndEventClasses::NAME_LABEL)); ProfilingStaticGuid LabelsAndEventClasses::TYPE_GUID( diff --git a/src/profiling/LabelsAndEventClasses.hpp b/src/profiling/LabelsAndEventClasses.hpp index fa125490cc..d79870fba9 100644 --- a/src/profiling/LabelsAndEventClasses.hpp +++ b/src/profiling/LabelsAndEventClasses.hpp @@ -20,10 +20,12 @@ class LabelsAndEventClasses { public: // Labels (string value + GUID) + ARMNN_DLLEXPORT static std::string EMPTY_LABEL; ARMNN_DLLEXPORT static std::string NAME_LABEL; ARMNN_DLLEXPORT static std::string TYPE_LABEL; ARMNN_DLLEXPORT static std::string INDEX_LABEL; ARMNN_DLLEXPORT static std::string BACKENDID_LABEL; + ARMNN_DLLEXPORT static ProfilingStaticGuid EMPTY_GUID; ARMNN_DLLEXPORT static ProfilingStaticGuid NAME_GUID; ARMNN_DLLEXPORT static ProfilingStaticGuid TYPE_GUID; ARMNN_DLLEXPORT static ProfilingStaticGuid INDEX_GUID; diff --git a/src/profiling/ProfilingUtils.cpp b/src/profiling/ProfilingUtils.cpp index f151dd6e4a..d83223750b 100644 --- a/src/profiling/ProfilingUtils.cpp +++ b/src/profiling/ProfilingUtils.cpp @@ -553,6 +553,7 @@ TimelinePacketStatus WriteTimelineRelationshipBinary(ProfilingRelationshipType r uint64_t relationshipGuid, uint64_t headGuid, uint64_t tailGuid, + uint64_t attributeGuid, unsigned char* buffer, unsigned int remainingBufferSize, unsigned int& numberOfBytesWritten) @@ -572,7 +573,8 @@ TimelinePacketStatus WriteTimelineRelationshipBinary(ProfilingRelationshipType r // Calculate the length of the data (in bytes) unsigned int timelineRelationshipDataLength = uint32_t_size * 2 + // decl_id + Relationship Type - uint64_t_size * 3; // Relationship GUID + Head GUID + tail GUID + uint64_t_size * 4; // Relationship GUID + Head GUID + + // tail GUID + attributeGuid // Check whether the timeline binary fits in the given buffer if (timelineRelationshipDataLength > remainingBufferSize) @@ -615,6 +617,9 @@ TimelinePacketStatus WriteTimelineRelationshipBinary(ProfilingRelationshipType r WriteUint64(buffer, offset, headGuid); // head of relationship GUID offset += uint64_t_size; WriteUint64(buffer, offset, tailGuid); // tail of relationship GUID + offset += uint64_t_size; + WriteUint64(buffer, offset, attributeGuid); // attribute of relationship GUID + // Update the number of bytes written numberOfBytesWritten = timelineRelationshipDataLength; diff --git a/src/profiling/ProfilingUtils.hpp b/src/profiling/ProfilingUtils.hpp index 22391c245b..92ddfe3659 100644 --- a/src/profiling/ProfilingUtils.hpp +++ b/src/profiling/ProfilingUtils.hpp @@ -229,6 +229,7 @@ TimelinePacketStatus WriteTimelineRelationshipBinary(ProfilingRelationshipType r uint64_t relationshipGuid, uint64_t headGuid, uint64_t tailGuid, + uint64_t attributeGuid, unsigned char* buffer, unsigned int bufferSize, unsigned int& numberOfBytesWritten); diff --git a/src/profiling/SendTimelinePacket.cpp b/src/profiling/SendTimelinePacket.cpp index 5152d66cab..db8a633468 100644 --- a/src/profiling/SendTimelinePacket.cpp +++ b/src/profiling/SendTimelinePacket.cpp @@ -110,13 +110,15 @@ void SendTimelinePacket::SendTimelineLabelBinaryPacket(uint64_t profilingGuid, c void SendTimelinePacket::SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType relationshipType, uint64_t relationshipGuid, uint64_t headGuid, - uint64_t tailGuid) + uint64_t tailGuid, + uint64_t attributeGuid) { ForwardWriteBinaryFunction(WriteTimelineRelationshipBinary, relationshipType, relationshipGuid, headGuid, - tailGuid); + tailGuid, + attributeGuid); } void SendTimelinePacket::SendTimelineMessageDirectoryPackage() diff --git a/src/profiling/SendTimelinePacket.hpp b/src/profiling/SendTimelinePacket.hpp index 9954bd9a04..d4ea2ff0e1 100644 --- a/src/profiling/SendTimelinePacket.hpp +++ b/src/profiling/SendTimelinePacket.hpp @@ -51,7 +51,8 @@ public: virtual void SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType relationshipType, uint64_t relationshipGuid, uint64_t headGuid, - uint64_t tailGuid) override; + uint64_t tailGuid, + uint64_t attributeGuid) override; private: /// Reserves maximum packet size from buffer void ReserveBuffer(); diff --git a/src/profiling/TimelineUtilityMethods.cpp b/src/profiling/TimelineUtilityMethods.cpp index de30b4d4ef..b0ce998c7a 100644 --- a/src/profiling/TimelineUtilityMethods.cpp +++ b/src/profiling/TimelineUtilityMethods.cpp @@ -185,15 +185,7 @@ void TimelineUtilityMethods::MarkEntityWithLabel(ProfilingGuid entityGuid, m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, relationshipGuid, entityGuid, - labelGuid); - - // Generate a GUID for the label relationship - ProfilingDynamicGuid relationshipLabelGuid = profiling::ProfilingService::GetNextGuid(); - - // Send the new label link to the external profiling service, this call throws in case of error - m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, - relationshipLabelGuid, - relationshipGuid, + labelGuid, labelTypeGuid); } @@ -207,15 +199,7 @@ void TimelineUtilityMethods::MarkEntityWithType(ProfilingGuid entityGuid, m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, relationshipGuid, entityGuid, - typeNameGuid); - - // Generate a GUID for the label relationship - ProfilingDynamicGuid relationshipLabelGuid = profiling::ProfilingService::GetNextGuid(); - - // Send the new label link to the external profiling service, this call throws in case of error - m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, - relationshipLabelGuid, - relationshipGuid, + typeNameGuid, LabelsAndEventClasses::TYPE_GUID); } @@ -257,7 +241,8 @@ ProfilingDynamicGuid TimelineUtilityMethods::CreateNamedTypedChildEntity(Profili m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, retentionLinkGuid, parentEntityGuid, - childEntityGuid); + childEntityGuid, + LabelsAndEventClasses::EMPTY_GUID); return childEntityGuid; } @@ -291,7 +276,8 @@ void TimelineUtilityMethods::CreateNamedTypedChildEntity(ProfilingGuid childEnti m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, retentionLinkGuid, parentEntityGuid, - childEntityGuid); + childEntityGuid, + LabelsAndEventClasses::EMPTY_GUID); } void TimelineUtilityMethods::CreateNamedTypedChildEntity(ProfilingGuid childEntityGuid, @@ -316,7 +302,8 @@ void TimelineUtilityMethods::CreateNamedTypedChildEntity(ProfilingGuid childEnti m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, retentionLinkGuid, parentEntityGuid, - childEntityGuid); + childEntityGuid, + LabelsAndEventClasses::EMPTY_GUID); } ProfilingDynamicGuid TimelineUtilityMethods::CreateRelationship(ProfilingRelationshipType relationshipType, @@ -330,7 +317,8 @@ ProfilingDynamicGuid TimelineUtilityMethods::CreateRelationship(ProfilingRelatio m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(relationshipType, relationshipGuid, headGuid, - tailGuid); + tailGuid, + LabelsAndEventClasses::EMPTY_GUID); return relationshipGuid; } @@ -345,7 +333,8 @@ ProfilingDynamicGuid TimelineUtilityMethods::CreateConnectionRelationship(Profil m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(relationshipType, relationshipGuid, headGuid, - tailGuid); + tailGuid, + LabelsAndEventClasses::EMPTY_GUID); MarkEntityWithType(relationshipGuid, LabelsAndEventClasses::CONNECTION_GUID); return relationshipGuid; @@ -381,14 +370,6 @@ ProfilingDynamicGuid TimelineUtilityMethods::RecordEvent(ProfilingGuid entityGui m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, executionLinkId, entityGuid, - eventGuid); - - // Generate a GUID for the data relationship link - ProfilingDynamicGuid eventClassLinkId = profiling::ProfilingService::GetNextGuid(); - - // Send the new data relationship link to the external profiling service, this call throws in case of error - m_SendTimelinePacket->SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, - eventClassLinkId, eventGuid, eventClassGuid); diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp index 73dbf881b3..ff256047be 100644 --- a/src/profiling/test/ProfilingTestUtils.cpp +++ b/src/profiling/test/ProfilingTestUtils.cpp @@ -57,21 +57,21 @@ void VerifyTimelineHeaderBinary(const unsigned char* readableData, unsigned int uint32_t_size = sizeof(uint32_t); // Check the TimelineEventClassBinaryPacket header - uint32_t entityBinaryPacketHeaderWord0 = ReadUint32(readableData, offset); - uint32_t entityBinaryPacketFamily = (entityBinaryPacketHeaderWord0 >> 26) & 0x0000003F; - uint32_t entityBinaryPacketClass = (entityBinaryPacketHeaderWord0 >> 19) & 0x0000007F; - uint32_t entityBinaryPacketType = (entityBinaryPacketHeaderWord0 >> 16) & 0x00000007; - uint32_t entityBinaryPacketStreamId = (entityBinaryPacketHeaderWord0 >> 0) & 0x00000007; - BOOST_CHECK(entityBinaryPacketFamily == 1); - BOOST_CHECK(entityBinaryPacketClass == 0); - BOOST_CHECK(entityBinaryPacketType == 1); - BOOST_CHECK(entityBinaryPacketStreamId == 0); + uint32_t timelineBinaryPacketHeaderWord0 = ReadUint32(readableData, offset); + uint32_t timelineBinaryPacketFamily = (timelineBinaryPacketHeaderWord0 >> 26) & 0x0000003F; + uint32_t timelineBinaryPacketClass = (timelineBinaryPacketHeaderWord0 >> 19) & 0x0000007F; + uint32_t timelineBinaryPacketType = (timelineBinaryPacketHeaderWord0 >> 16) & 0x00000007; + uint32_t timelineBinaryPacketStreamId = (timelineBinaryPacketHeaderWord0 >> 0) & 0x00000007; + BOOST_CHECK(timelineBinaryPacketFamily == 1); + BOOST_CHECK(timelineBinaryPacketClass == 0); + BOOST_CHECK(timelineBinaryPacketType == 1); + BOOST_CHECK(timelineBinaryPacketStreamId == 0); offset += uint32_t_size; - uint32_t entityBinaryPacketHeaderWord1 = ReadUint32(readableData, offset); - uint32_t eventBinaryPacketSequenceNumber = (entityBinaryPacketHeaderWord1 >> 24) & 0x00000001; - uint32_t eventBinaryPacketDataLength = (entityBinaryPacketHeaderWord1 >> 0) & 0x00FFFFFF; - BOOST_CHECK(eventBinaryPacketSequenceNumber == 0); - BOOST_CHECK(eventBinaryPacketDataLength == packetDataLength); + uint32_t timelineBinaryPacketHeaderWord1 = ReadUint32(readableData, offset); + uint32_t timelineBinaryPacketSequenceNumber = (timelineBinaryPacketHeaderWord1 >> 24) & 0x00000001; + uint32_t timelineBinaryPacketDataLength = (timelineBinaryPacketHeaderWord1 >> 0) & 0x00FFFFFF; + BOOST_CHECK(timelineBinaryPacketSequenceNumber == 0); + BOOST_CHECK(timelineBinaryPacketDataLength == packetDataLength); offset += uint32_t_size; } @@ -144,6 +144,7 @@ void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relati Optional relationshipGuid, Optional headGuid, Optional tailGuid, + Optional attributeGuid, const unsigned char* readableData, unsigned int& offset) { @@ -217,6 +218,18 @@ void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relati BOOST_CHECK(readTailRelationshipGuid != ProfilingGuid(0)); } + // Check the tail of relationship GUID + offset += uint64_t_size; + uint64_t readAttributeRelationshipGuid = ReadUint64(readableData, offset); + if (attributeGuid.has_value()) + { + BOOST_CHECK(readAttributeRelationshipGuid == attributeGuid.value()); + } + else + { + BOOST_CHECK(readAttributeRelationshipGuid == ProfilingGuid(0)); + } + // Update the offset to allow parsing to be continued after this function returns offset += uint64_t_size; } @@ -396,7 +409,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) BOOST_CHECK(readableBuffer != nullptr); unsigned int size = readableBuffer->GetSize(); - BOOST_CHECK(size == 1556); + BOOST_CHECK(size == 1244); const unsigned char* readableData = readableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -404,7 +417,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) unsigned int offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 1548); + VerifyTimelineHeaderBinary(readableData, offset, 1236); // Post-optimisation network // Network entity @@ -415,13 +428,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), optNetGuid, EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -438,38 +444,31 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), input->GetGuid(), EmptyOptional(), + LabelsAndEventClasses::NAME_GUID, readableData, offset); // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), - LabelsAndEventClasses::NAME_GUID, - readableData, - offset); + // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), input->GetGuid(), EmptyOptional(), + LabelsAndEventClasses::TYPE_GUID, readableData, offset); // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), - LabelsAndEventClasses::TYPE_GUID, - readableData, - offset); + // Network - Input layer relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::RetentionLink, EmptyOptional(), optNetGuid, input->GetGuid(), + EmptyOptional(), readableData, offset); @@ -485,13 +484,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), conv2d->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::NAME_GUID, readableData, offset); @@ -501,22 +493,17 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), conv2d->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); + // Network - Conv2d layer relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::RetentionLink, EmptyOptional(), optNetGuid, conv2d->GetGuid(), + EmptyOptional(), readableData, offset); @@ -525,6 +512,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), input->GetGuid(), conv2d->GetGuid(), + EmptyOptional(), readableData, offset); @@ -533,17 +521,12 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::CONNECTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); + + // Conv2d workload // Conv2d workload entity VerifyTimelineEntityBinaryPacketData(EmptyOptional(), readableData, offset); @@ -551,43 +534,32 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); + // BackendId entity VerifyTimelineLabelBinaryPacketData(EmptyOptional(), backendId.Get(), readableData, offset); // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, readableData, offset); + // Conv2d layer - Conv2d workload relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::RetentionLink, EmptyOptional(), conv2d->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -603,13 +575,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), activation->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::NAME_GUID, readableData, offset); @@ -619,13 +584,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), activation->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -635,6 +593,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), optNetGuid, activation->GetGuid(), + EmptyOptional(), readableData, offset); @@ -643,6 +602,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), conv2d->GetGuid(), activation->GetGuid(), + EmptyOptional(), readableData, offset); @@ -651,13 +611,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::CONNECTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -669,13 +622,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, @@ -688,13 +634,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, @@ -706,6 +645,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), activation->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -721,13 +661,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), output->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Name label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::NAME_GUID, readableData, offset); @@ -737,13 +670,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), output->GetGuid(), EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -753,6 +679,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), optNetGuid, output->GetGuid(), + EmptyOptional(), readableData, offset); @@ -761,6 +688,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), activation->GetGuid(), output->GetGuid(), + EmptyOptional(), readableData, offset); @@ -769,13 +697,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::CONNECTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -812,7 +733,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Validate input workload data size = inputReadableBuffer->GetSize(); - BOOST_CHECK(size == 204); + BOOST_CHECK(size == 164); readableData = inputReadableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -820,7 +741,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 196); + VerifyTimelineHeaderBinary(readableData, offset, 156); // Input workload // Input workload entity @@ -829,13 +750,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, @@ -848,13 +762,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, @@ -866,6 +773,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), input->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -873,7 +781,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Validate output workload data size = outputReadableBuffer->GetSize(); - BOOST_CHECK(size == 204); + BOOST_CHECK(size == 164); readableData = outputReadableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -881,7 +789,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 196); + VerifyTimelineHeaderBinary(readableData, offset, 156); // Output workload // Output workload entity @@ -890,13 +798,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - Type relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, @@ -909,13 +810,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Entity - BackendId relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // BackendId label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::BACKENDID_GUID, @@ -927,6 +821,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), output->GetGuid(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -935,7 +830,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Validate inference data size = inferenceReadableBuffer->GetSize(); - BOOST_CHECK(size == 1516 + 10 * ThreadIdSize); + BOOST_CHECK(size == 1228 + 10 * ThreadIdSize); readableData = inferenceReadableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -943,7 +838,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 1508 + 10 * ThreadIdSize); + VerifyTimelineHeaderBinary(readableData, offset, 1220 + 10 * ThreadIdSize); // Inference timeline trace // Inference entity @@ -954,13 +849,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::INFERENCE_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -970,6 +858,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), optNetGuid, EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -980,13 +869,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Inference - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -1003,13 +885,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -1019,6 +894,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1027,6 +903,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1037,13 +914,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Input workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -1057,13 +927,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Input workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -1079,13 +942,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -1095,6 +951,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1103,6 +960,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1113,13 +971,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Conv2d workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -1133,13 +984,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Conv2d workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -1155,13 +999,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -1171,6 +1008,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1179,6 +1017,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1189,13 +1028,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Activation workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -1209,13 +1041,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Activation workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -1231,13 +1056,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, - readableData, - offset); - - // Type label relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); @@ -1247,6 +1065,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1255,6 +1074,7 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) EmptyOptional(), EmptyOptional(), EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -1265,13 +1085,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Output workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, @@ -1285,13 +1098,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Output workload execution - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, @@ -1305,13 +1111,6 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Inference - event relationship VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Event - event class relationship - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, diff --git a/src/profiling/test/ProfilingTestUtils.hpp b/src/profiling/test/ProfilingTestUtils.hpp index 428ffa22e3..7e4f399eba 100644 --- a/src/profiling/test/ProfilingTestUtils.hpp +++ b/src/profiling/test/ProfilingTestUtils.hpp @@ -40,6 +40,7 @@ void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relati Optional relationshipGuid, Optional headGuid, Optional tailGuid, + Optional attributeGuid, const unsigned char* readableData, unsigned int& offset); diff --git a/src/profiling/test/TimelinePacketTests.cpp b/src/profiling/test/TimelinePacketTests.cpp index e57ed2a652..8cce520da2 100644 --- a/src/profiling/test/TimelinePacketTests.cpp +++ b/src/profiling/test/TimelinePacketTests.cpp @@ -122,11 +122,13 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketNullBufferTest) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, nullptr, 512u, numberOfBytesWritten); @@ -142,11 +144,13 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketZeroBufferSizeTest) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), 0, numberOfBytesWritten); @@ -162,12 +166,14 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketSmallBufferSizeTest) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), boost::numeric_cast(buffer.size()), numberOfBytesWritten); @@ -182,12 +188,15 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketInvalidRelationTest) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; + unsigned int numberOfBytesWritten = 789u; BOOST_CHECK_THROW(WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), boost::numeric_cast(buffer.size()), numberOfBytesWritten), @@ -204,17 +213,19 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketTestDataConstruction) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), boost::numeric_cast(buffer.size()), numberOfBytesWritten); BOOST_CHECK(result == TimelinePacketStatus::Ok); - BOOST_CHECK(numberOfBytesWritten == 32); + BOOST_CHECK(numberOfBytesWritten == 40); unsigned int uint32_t_size = sizeof(uint32_t); unsigned int uint64_t_size = sizeof(uint64_t); @@ -244,6 +255,11 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketTestDataConstruction) offset += uint64_t_size; uint64_t readTailGuid = ReadUint64(buffer.data(), offset); BOOST_CHECK(readTailGuid == tailGuid); + + // Check the attribute GUID + offset += uint64_t_size; + uint64_t readAttributeGuid = ReadUint64(buffer.data(), offset); + BOOST_CHECK(readAttributeGuid == attributeGuid); } BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketExecutionLinkTestDataConstruction) @@ -254,17 +270,19 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketExecutionLinkTestDataConstruction const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), boost::numeric_cast(buffer.size()), numberOfBytesWritten); BOOST_CHECK(result == TimelinePacketStatus::Ok); - BOOST_CHECK(numberOfBytesWritten == 32); + BOOST_CHECK(numberOfBytesWritten == 40); unsigned int uint32_t_size = sizeof(uint32_t); unsigned int uint64_t_size = sizeof(uint64_t); @@ -292,6 +310,11 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketExecutionLinkTestDataConstruction offset += uint64_t_size; uint64_t readTailGuid = ReadUint64(buffer.data(), offset); BOOST_CHECK(readTailGuid == tailGuid); + + // Check the attribute GUID + offset += uint64_t_size; + uint64_t readAttributeGuid = ReadUint64(buffer.data(), offset); + BOOST_CHECK(readAttributeGuid == attributeGuid); } @@ -303,17 +326,19 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketDataLinkTestDataConstruction) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), boost::numeric_cast(buffer.size()), numberOfBytesWritten); BOOST_CHECK(result == TimelinePacketStatus::Ok); - BOOST_CHECK(numberOfBytesWritten == 32); + BOOST_CHECK(numberOfBytesWritten == 40); unsigned int uint32_t_size = sizeof(uint32_t); unsigned int uint64_t_size = sizeof(uint64_t); @@ -341,6 +366,11 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketDataLinkTestDataConstruction) offset += uint64_t_size; uint64_t readTailGuid = ReadUint64(buffer.data(), offset); BOOST_CHECK(readTailGuid == tailGuid); + + // Check the attribute GUID + offset += uint64_t_size; + uint64_t readAttributeGuid = ReadUint64(buffer.data(), offset); + BOOST_CHECK(readAttributeGuid == attributeGuid); } @@ -352,17 +382,19 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketLabelLinkTestDataConstruction) const uint64_t relationshipGuid = 123456u; const uint64_t headGuid = 234567u; const uint64_t tailGuid = 345678u; + const uint64_t attributeGuid = 876345u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineRelationshipBinary(relationshipType, relationshipGuid, headGuid, tailGuid, + attributeGuid, buffer.data(), boost::numeric_cast(buffer.size()), numberOfBytesWritten); BOOST_CHECK(result == TimelinePacketStatus::Ok); - BOOST_CHECK(numberOfBytesWritten == 32); + BOOST_CHECK(numberOfBytesWritten == 40); unsigned int uint32_t_size = sizeof(uint32_t); unsigned int uint64_t_size = sizeof(uint64_t); @@ -391,6 +423,11 @@ BOOST_AUTO_TEST_CASE(TimelineRelationshipPacketLabelLinkTestDataConstruction) offset += uint64_t_size; uint64_t readTailGuid = ReadUint64(buffer.data(), offset); BOOST_CHECK(readTailGuid == tailGuid); + + // Check the attribute GUID + offset += uint64_t_size; + uint64_t readAttributeGuid = ReadUint64(buffer.data(), offset); + BOOST_CHECK(readAttributeGuid == attributeGuid); } BOOST_AUTO_TEST_CASE(TimelineMessageDirectoryPacketTestNoBuffer) diff --git a/src/profiling/test/TimelineUtilityMethodsTests.cpp b/src/profiling/test/TimelineUtilityMethodsTests.cpp index 388d38acc4..8fd8c369f4 100644 --- a/src/profiling/test/TimelineUtilityMethodsTests.cpp +++ b/src/profiling/test/TimelineUtilityMethodsTests.cpp @@ -44,7 +44,7 @@ BOOST_AUTO_TEST_CASE(CreateTypedLabelTest) auto readableBuffer = mockBufferManager.GetReadableBuffer(); BOOST_CHECK(readableBuffer != nullptr); unsigned int size = readableBuffer->GetSize(); - BOOST_CHECK(size == 100); + BOOST_CHECK(size == 76); const unsigned char* readableData = readableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -52,7 +52,7 @@ BOOST_AUTO_TEST_CASE(CreateTypedLabelTest) unsigned int offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 92); + VerifyTimelineHeaderBinary(readableData, offset, 68); // First dataset sent: TimelineLabelBinaryPacket VerifyTimelineLabelBinaryPacketData(EmptyOptional(), entityName, readableData, offset); @@ -62,13 +62,6 @@ BOOST_AUTO_TEST_CASE(CreateTypedLabelTest) EmptyOptional(), entityGuid, EmptyOptional(), - readableData, - offset); - - // Third dataset sent: TimelineRelationshipBinaryPacket - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, - EmptyOptional(), - EmptyOptional(), labelTypeGuid, readableData, offset); @@ -210,7 +203,7 @@ BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) auto readableBuffer = mockBufferManager.GetReadableBuffer(); BOOST_CHECK(readableBuffer != nullptr); unsigned int size = readableBuffer->GetSize(); - BOOST_CHECK(size == 236); + BOOST_CHECK(size == 196); const unsigned char* readableData = readableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -218,7 +211,7 @@ BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) unsigned int offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 228); + VerifyTimelineHeaderBinary(readableData, offset, 188); // First dataset sent: TimelineEntityBinaryPacket VerifyTimelineEntityBinaryPacketData(EmptyOptional(), readableData, offset); @@ -229,13 +222,6 @@ BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) // Third dataset sent: TimelineRelationshipBinaryPacket VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Fourth dataset sent: TimelineRelationshipBinaryPacket - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::NAME_GUID, @@ -248,24 +234,19 @@ BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) // Sixth dataset sent: TimelineRelationshipBinaryPacket VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Seventh dataset sent: TimelineRelationshipBinaryPacket - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); + // Eighth dataset sent: TimelineRelationshipBinaryPacket VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::RetentionLink, EmptyOptional(), parentEntityGuid, EmptyOptional(), + EmptyOptional(), readableData, offset); @@ -350,7 +331,7 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityTest) auto readableBuffer = mockBufferManager.GetReadableBuffer(); BOOST_CHECK(readableBuffer != nullptr); unsigned int size = readableBuffer->GetSize(); - BOOST_CHECK(size == 196); + BOOST_CHECK(size == 148); const unsigned char* readableData = readableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -358,7 +339,7 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityTest) unsigned int offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 188); + VerifyTimelineHeaderBinary(readableData, offset, 140); // First dataset sent: TimelineEntityBinaryPacket VerifyTimelineEntityBinaryPacketData(guid, readableData, offset); @@ -370,13 +351,6 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityTest) // Second dataset sent: TimelineRelationshipBinaryPacket VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Third dataset sent: TimelineRelationshipBinaryPacket - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::NAME_GUID, @@ -390,19 +364,13 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityTest) // Second dataset sent: TimelineRelationshipBinaryPacket VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), - EmptyOptional(), - EmptyOptional(), - readableData, - offset); - - // Third dataset sent: TimelineRelationshipBinaryPacket - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink, EmptyOptional(), EmptyOptional(), LabelsAndEventClasses::TYPE_GUID, readableData, offset); + // Mark the buffer as read mockBufferManager.MarkRead(readableBuffer); } @@ -430,7 +398,7 @@ BOOST_AUTO_TEST_CASE(RecordEventTest) BOOST_CHECK(readableBuffer != nullptr); unsigned int size = readableBuffer->GetSize(); - BOOST_CHECK(size == 92 + ThreadIdSize); + BOOST_CHECK(size == 68 + ThreadIdSize); const unsigned char* readableData = readableBuffer->GetReadableData(); BOOST_CHECK(readableData != nullptr); @@ -439,7 +407,7 @@ BOOST_AUTO_TEST_CASE(RecordEventTest) unsigned int offset = 0; // Verify Header - VerifyTimelineHeaderBinary(readableData, offset, 84 + ThreadIdSize); + VerifyTimelineHeaderBinary(readableData, offset, 60 + ThreadIdSize); // First dataset sent: TimelineEntityBinaryPacket VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); @@ -448,13 +416,6 @@ BOOST_AUTO_TEST_CASE(RecordEventTest) VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink, EmptyOptional(), entityGuid, - EmptyOptional(), - readableData, - offset); - - // Third dataset sent: TimelineRelationshipBinaryPacket - VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::DataLink, - EmptyOptional(), eventGuid, eventClassGuid, readableData, diff --git a/src/timelineDecoder/TimelineCaptureCommandHandler.cpp b/src/timelineDecoder/TimelineCaptureCommandHandler.cpp index 58edd9fc43..69389115a0 100644 --- a/src/timelineDecoder/TimelineCaptureCommandHandler.cpp +++ b/src/timelineDecoder/TimelineCaptureCommandHandler.cpp @@ -107,6 +107,10 @@ void TimelineCaptureCommandHandler::ReadRelationship(const unsigned char* data, relationship.m_TailGuid = profiling::ReadUint64(data, offset); offset += uint64_t_size; + + relationship.m_AttributeGuid = profiling::ReadUint64(data, offset); + offset += uint64_t_size; + m_TimelineDecoder.CreateRelationship(relationship); } diff --git a/src/timelineDecoder/tests/TimelineTests.cpp b/src/timelineDecoder/tests/TimelineTests.cpp index bff25367fd..390b589b7f 100644 --- a/src/timelineDecoder/tests/TimelineTests.cpp +++ b/src/timelineDecoder/tests/TimelineTests.cpp @@ -227,7 +227,8 @@ BOOST_AUTO_TEST_CASE(TimelineCaptureTest) sendTimelinePacket->SendTimelineRelationshipBinaryPacket(relationshipType, relationshipGuid, headGuid, - tailGuid); + tailGuid, + 0); sendTimelinePacket->Commit(); SendTimelinePacketToCommandHandler(bufferManager.GetReadableBuffer()->GetReadableData(), timelineCaptureCommandHandler); @@ -327,7 +328,8 @@ BOOST_AUTO_TEST_CASE(TimelineCaptureTestMultipleStringsInBuffer) sendTimelinePacket->SendTimelineRelationshipBinaryPacket(relationshipType, relationshipGuid, headGuid, - tailGuid); + tailGuid, + 0); } sendTimelinePacket->Commit(); -- cgit v1.2.1