blob: 2e7daabda77e35ee109ac52fcaf0e3b412aebd9c [file] [log] [blame]
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +00001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// 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>
13#include <armnn/Types.hpp>
14#include <BufferManager.hpp>
15#include <ProfilingService.hpp>
16
17using namespace armnn;
18using namespace armnn::profiling;
19
Finn Williams985fecf2020-04-30 11:06:43 +010020const static uint32_t bodyHeaderSize = 6;
21
Finn Williamsa0de0562020-04-22 12:27:37 +010022uint32_t GetStreamMetaDataPacketSize();
23
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000024inline unsigned int OffsetToNextWord(unsigned int numberOfBytes);
25
Keith Davis97da5e22020-03-05 16:25:28 +000026void VerifyTimelineHeaderBinary(const unsigned char* readableData,
27 unsigned int& offset,
28 uint32_t packetDataLength);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000029
Keith Davis97da5e22020-03-05 16:25:28 +000030void VerifyTimelineLabelBinaryPacketData(Optional<ProfilingGuid> guid,
31 const std::string& label,
32 const unsigned char* readableData,
33 unsigned int& offset);
34
35void VerifyTimelineEventClassBinaryPacketData(ProfilingGuid guid,
Jim Flynn1892d212020-05-26 21:10:49 +010036 ProfilingGuid nameGuid,
Keith Davis97da5e22020-03-05 16:25:28 +000037 const unsigned char* readableData,
38 unsigned int& offset);
39
40void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relationshipType,
41 Optional<ProfilingGuid> relationshipGuid,
42 Optional<ProfilingGuid> headGuid,
43 Optional<ProfilingGuid> tailGuid,
Finn Williams0a336dc2020-05-11 15:39:58 +010044 Optional<ProfilingGuid> attributeGuid,
Keith Davis97da5e22020-03-05 16:25:28 +000045 const unsigned char* readableData,
46 unsigned int& offset);
47
48void VerifyTimelineEntityBinaryPacketData(Optional<ProfilingGuid> guid,
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000049 const unsigned char* readableData,
50 unsigned int& offset);
51
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000052void VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp,
53 Optional<std::thread::id> threadId,
54 Optional<ProfilingGuid> eventGuid,
55 const unsigned char* readableData,
56 unsigned int& offset);
57
58void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId);
59
60namespace armnn
61{
62
63namespace profiling
64{
65
66class ProfilingServiceRuntimeHelper : public ProfilingService
67{
68public:
Sadik Armagan3184c902020-03-18 10:57:30 +000069 ProfilingServiceRuntimeHelper(ProfilingService& profilingService)
70 : m_ProfilingService(profilingService) {}
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000071 ~ProfilingServiceRuntimeHelper() = default;
72
73 BufferManager& GetProfilingBufferManager()
74 {
Sadik Armagan3184c902020-03-18 10:57:30 +000075 return GetBufferManager(m_ProfilingService);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000076 }
Sadik Armagan3184c902020-03-18 10:57:30 +000077 armnn::profiling::ProfilingService& m_ProfilingService;
Keith Davis33ed2212020-03-30 10:43:41 +010078
79 void ForceTransitionToState(ProfilingState newState)
80 {
81 TransitionToState(m_ProfilingService, newState);
82 }
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000083};
84
85} // namespace profiling
86
87} // namespace armnn
88