diff options
Diffstat (limited to 'src/profiling/test/ProfilingTestUtils.cpp')
-rw-r--r-- | src/profiling/test/ProfilingTestUtils.cpp | 388 |
1 files changed, 388 insertions, 0 deletions
diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp index 862dcf0bf3..bc8b7a7b4d 100644 --- a/src/profiling/test/ProfilingTestUtils.cpp +++ b/src/profiling/test/ProfilingTestUtils.cpp @@ -832,6 +832,10 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Does the inference. runtime->EnqueueWorkload(netId, inputTensors, outputTensors); + // Get readable buffer for inference timeline + auto inferenceReadableBuffer = bufferManager.GetReadableBuffer(); + BOOST_CHECK(inferenceReadableBuffer != nullptr); + // Get readable buffer for output workload auto outputReadableBuffer = bufferManager.GetReadableBuffer(); BOOST_CHECK(outputReadableBuffer != nullptr); @@ -955,4 +959,388 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) offset); bufferManager.MarkRead(outputReadableBuffer); + + // Validate inference data + size = inferenceReadableBuffer->GetSize(); + BOOST_CHECK(size == 2020); + + readableData = inferenceReadableBuffer->GetReadableData(); + BOOST_CHECK(readableData != nullptr); + + offset = 0; + + // Inference timeline trace + // Inference entity + VerifyTimelineEntityBinaryPacket(EmptyOptional(), readableData, offset); + + // Entity - Type relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::INFERENCE_GUID, + readableData, + offset); + + // Type label relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::TYPE_GUID, + readableData, + offset); + + // Network - Inference relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + optNetGuid, + EmptyOptional(), + readableData, + offset); + + // Start Inference life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Inference - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, + readableData, + offset); + + // Execution + // Input workload execution + // Input workload execution entity + VerifyTimelineEntityBinaryPacket(EmptyOptional(), readableData, offset); + + // Entity - Type relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, + readableData, + offset); + + // Type label relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::TYPE_GUID, + readableData, + offset); + + // Inference - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Workload - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Start Input workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Input workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, + readableData, + offset); + + // End of Input workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Input workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, + readableData, + offset); + + // Conv2d workload execution + // Conv2d workload execution entity + VerifyTimelineEntityBinaryPacket(EmptyOptional(), readableData, offset); + + // Entity - Type relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, + readableData, + offset); + + // Type label relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::TYPE_GUID, + readableData, + offset); + + // Inference - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Workload - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Start Conv2d workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Conv2d workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, + readableData, + offset); + + // End of Conv2d workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Conv2d workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, + readableData, + offset); + + // Activation workload execution + // Activation workload execution entity + VerifyTimelineEntityBinaryPacket(EmptyOptional(), readableData, offset); + + // Entity - Type relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, + readableData, + offset); + + // Type label relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::TYPE_GUID, + readableData, + offset); + + // Inference - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Workload - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Start Activation workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Activation workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS, + readableData, + offset); + + // End of Activation workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Activation workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, + readableData, + offset); + + // Output workload execution + // Output workload execution entity + VerifyTimelineEntityBinaryPacket(EmptyOptional(), readableData, offset); + + // Entity - Type relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID, + readableData, + offset); + + // Type label relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::LabelLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::TYPE_GUID, + readableData, + offset); + + // Inference - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Workload - Workload execution relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::RetentionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Start Output workload execution life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Output workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(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); + + // Output workload execution - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, + readableData, + offset); + + // End of Inference life + // Event packet - timeline, threadId, eventGuid + VerifyTimelineEventBinaryPacket(EmptyOptional(), EmptyOptional(), EmptyOptional(), readableData, offset); + + // Inference - event relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::ExecutionLink, + EmptyOptional(), + EmptyOptional(), + EmptyOptional(), + readableData, + offset); + + // Event - event class relationship + VerifyTimelineRelationshipBinaryPacket(ProfilingRelationshipType::DataLink, + EmptyOptional(), + EmptyOptional(), + LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS, + readableData, + offset); + + bufferManager.MarkRead(inferenceReadableBuffer); } |