blob: 810a34c3e26e2b38e927d0c1b1b72729f70bb8b2 [file] [log] [blame]
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +00001//
Jim Flynn6398a982020-05-27 17:05:21 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +00003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "ProfilingUtils.hpp"
Keith Davis33ed2212020-03-30 10:43:41 +01009#include "Runtime.hpp"
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000010
11#include <armnn/BackendId.hpp>
12#include <armnn/Optional.hpp>
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000013#include <BufferManager.hpp>
14#include <ProfilingService.hpp>
15
Nikhil Raj77fe76b2021-06-09 14:55:32 +010016#include <common/include/ProfilingGuid.hpp>
17
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000018using namespace armnn;
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000019using namespace arm::pipe;
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000020
Finn Williams985fecf2020-04-30 11:06:43 +010021const static uint32_t bodyHeaderSize = 6;
22
Finn Williamsa0de0562020-04-22 12:27:37 +010023uint32_t GetStreamMetaDataPacketSize();
24
Jan Eilersf78c7672020-07-01 18:09:39 +010025/// Returns a vector of CpuRef, CpuAcc or GpuAcc backends if they where registered
26std::vector<BackendId> GetSuitableBackendRegistered();
27
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000028inline unsigned int OffsetToNextWord(unsigned int numberOfBytes);
29
Keith Davis97da5e22020-03-05 16:25:28 +000030void VerifyTimelineHeaderBinary(const unsigned char* readableData,
31 unsigned int& offset,
32 uint32_t packetDataLength);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000033
Jim Flynn6398a982020-05-27 17:05:21 +010034ProfilingGuid VerifyTimelineLabelBinaryPacketData(Optional<ProfilingGuid> guid,
35 const std::string& label,
36 const unsigned char* readableData,
37 unsigned int& offset);
Keith Davis97da5e22020-03-05 16:25:28 +000038
39void VerifyTimelineEventClassBinaryPacketData(ProfilingGuid guid,
Jim Flynn1892d212020-05-26 21:10:49 +010040 ProfilingGuid nameGuid,
Keith Davis97da5e22020-03-05 16:25:28 +000041 const unsigned char* readableData,
42 unsigned int& offset);
43
44void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relationshipType,
45 Optional<ProfilingGuid> relationshipGuid,
46 Optional<ProfilingGuid> headGuid,
47 Optional<ProfilingGuid> tailGuid,
Finn Williams0a336dc2020-05-11 15:39:58 +010048 Optional<ProfilingGuid> attributeGuid,
Keith Davis97da5e22020-03-05 16:25:28 +000049 const unsigned char* readableData,
50 unsigned int& offset);
51
Jim Flynn6398a982020-05-27 17:05:21 +010052ProfilingGuid VerifyTimelineEntityBinaryPacketData(Optional<ProfilingGuid> guid,
53 const unsigned char* readableData,
54 unsigned int& offset);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000055
Jim Flynn6398a982020-05-27 17:05:21 +010056ProfilingGuid VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp,
Jim Flynn1fdeb992020-07-09 07:28:37 +010057 Optional<int> threadId,
Jim Flynn6398a982020-05-27 17:05:21 +010058 Optional<ProfilingGuid> eventGuid,
59 const unsigned char* readableData,
60 unsigned int& offset);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000061
62void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId);
63
Jim Flynn6398a982020-05-27 17:05:21 +010064bool CompareOutput(std::vector<std::string> output, std::vector<std::string> expectedOutput);
65
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000066namespace arm
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000067{
68
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000069namespace pipe
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000070{
71
72class ProfilingServiceRuntimeHelper : public ProfilingService
73{
74public:
Sadik Armagan3184c902020-03-18 10:57:30 +000075 ProfilingServiceRuntimeHelper(ProfilingService& profilingService)
76 : m_ProfilingService(profilingService) {}
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000077 ~ProfilingServiceRuntimeHelper() = default;
78
79 BufferManager& GetProfilingBufferManager()
80 {
Sadik Armagan3184c902020-03-18 10:57:30 +000081 return GetBufferManager(m_ProfilingService);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000082 }
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000083 ProfilingService& m_ProfilingService;
Keith Davis33ed2212020-03-30 10:43:41 +010084
85 void ForceTransitionToState(ProfilingState newState)
86 {
87 TransitionToState(m_ProfilingService, newState);
88 }
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000089};
90
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000091} // namespace pipe
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000092
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000093} // namespace arm
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000094