blob: 816ffd3dc690910e7ada0eab97527f58f5ab4fb7 [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
20inline unsigned int OffsetToNextWord(unsigned int numberOfBytes);
21
Keith Davis97da5e22020-03-05 16:25:28 +000022void VerifyTimelineHeaderBinary(const unsigned char* readableData,
23 unsigned int& offset,
24 uint32_t packetDataLength);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000025
Keith Davis97da5e22020-03-05 16:25:28 +000026void VerifyTimelineLabelBinaryPacketData(Optional<ProfilingGuid> guid,
27 const std::string& label,
28 const unsigned char* readableData,
29 unsigned int& offset);
30
31void VerifyTimelineEventClassBinaryPacketData(ProfilingGuid guid,
32 const unsigned char* readableData,
33 unsigned int& offset);
34
35void VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType relationshipType,
36 Optional<ProfilingGuid> relationshipGuid,
37 Optional<ProfilingGuid> headGuid,
38 Optional<ProfilingGuid> tailGuid,
39 const unsigned char* readableData,
40 unsigned int& offset);
41
42void VerifyTimelineEntityBinaryPacketData(Optional<ProfilingGuid> guid,
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000043 const unsigned char* readableData,
44 unsigned int& offset);
45
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000046void VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp,
47 Optional<std::thread::id> threadId,
48 Optional<ProfilingGuid> eventGuid,
49 const unsigned char* readableData,
50 unsigned int& offset);
51
52void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId);
53
54namespace armnn
55{
56
57namespace profiling
58{
59
60class ProfilingServiceRuntimeHelper : public ProfilingService
61{
62public:
Sadik Armagan3184c902020-03-18 10:57:30 +000063 ProfilingServiceRuntimeHelper(ProfilingService& profilingService)
64 : m_ProfilingService(profilingService) {}
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000065 ~ProfilingServiceRuntimeHelper() = default;
66
67 BufferManager& GetProfilingBufferManager()
68 {
Sadik Armagan3184c902020-03-18 10:57:30 +000069 return GetBufferManager(m_ProfilingService);
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000070 }
Sadik Armagan3184c902020-03-18 10:57:30 +000071 armnn::profiling::ProfilingService& m_ProfilingService;
Keith Davis33ed2212020-03-30 10:43:41 +010072
73 void ForceTransitionToState(ProfilingState newState)
74 {
75 TransitionToState(m_ProfilingService, newState);
76 }
Narumol Prangnawaratdf31cfe2019-11-22 11:26:06 +000077};
78
79} // namespace profiling
80
81} // namespace armnn
82