1 // 2 // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "ProfilingUtils.hpp" 9 #include "Runtime.hpp" 10 11 #include <armnn/BackendId.hpp> 12 #include <armnn/Optional.hpp> 13 #include <armnn/Types.hpp> 14 #include <BufferManager.hpp> 15 #include <ProfilingService.hpp> 16 17 using namespace armnn; 18 using namespace armnn::profiling; 19 20 const static uint32_t bodyHeaderSize = 6; 21 22 uint32_t GetStreamMetaDataPacketSize(); 23 24 /// Returns a vector of CpuRef, CpuAcc or GpuAcc backends if they where registered 25 std::vector<BackendId> GetSuitableBackendRegistered(); 26 27 inline unsigned int OffsetToNextWord(unsigned int numberOfBytes); 28 29 void VerifyTimelineHeaderBinary(const unsigned char* readableData, 30 unsigned int& offset, 31 uint32_t packetDataLength); 32 33 ProfilingGuid VerifyTimelineLabelBinaryPacketData(Optional<ProfilingGuid> guid, 34 const std::string& label, 35 const unsigned char* readableData, 36 unsigned int& offset); 37 38 void VerifyTimelineEventClassBinaryPacketData(ProfilingGuid guid, 39 ProfilingGuid nameGuid, 40 const unsigned char* readableData, 41 unsigned int& offset); 42 43 void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relationshipType, 44 Optional<ProfilingGuid> relationshipGuid, 45 Optional<ProfilingGuid> headGuid, 46 Optional<ProfilingGuid> tailGuid, 47 Optional<ProfilingGuid> attributeGuid, 48 const unsigned char* readableData, 49 unsigned int& offset); 50 51 ProfilingGuid VerifyTimelineEntityBinaryPacketData(Optional<ProfilingGuid> guid, 52 const unsigned char* readableData, 53 unsigned int& offset); 54 55 ProfilingGuid VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp, 56 Optional<int> threadId, 57 Optional<ProfilingGuid> eventGuid, 58 const unsigned char* readableData, 59 unsigned int& offset); 60 61 void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId); 62 63 bool CompareOutput(std::vector<std::string> output, std::vector<std::string> expectedOutput); 64 65 namespace armnn 66 { 67 68 namespace profiling 69 { 70 71 class ProfilingServiceRuntimeHelper : public ProfilingService 72 { 73 public: ProfilingServiceRuntimeHelper(ProfilingService & profilingService)74 ProfilingServiceRuntimeHelper(ProfilingService& profilingService) 75 : m_ProfilingService(profilingService) {} 76 ~ProfilingServiceRuntimeHelper() = default; 77 GetProfilingBufferManager()78 BufferManager& GetProfilingBufferManager() 79 { 80 return GetBufferManager(m_ProfilingService); 81 } 82 armnn::profiling::ProfilingService& m_ProfilingService; 83 ForceTransitionToState(ProfilingState newState)84 void ForceTransitionToState(ProfilingState newState) 85 { 86 TransitionToState(m_ProfilingService, newState); 87 } 88 }; 89 90 } // namespace profiling 91 92 } // namespace armnn 93 94