• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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