40 static const uint16_t NETWORK_LOADS = 0;
41 static const uint16_t NETWORK_UNLOADS = 1;
42 static const uint16_t REGISTERED_BACKENDS = 2;
43 static const uint16_t UNREGISTERED_BACKENDS = 3;
44 static const uint16_t INFERENCES_RUN = 4;
45 static const uint16_t MAX_ARMNN_COUNTER = INFERENCES_RUN;
56 std::shared_ptr<armnn::profiling::IBackendProfilingContext>>;
60 , m_TimelineReporting(
false)
61 , m_CounterDirectory()
63 , m_ProfilingConnection()
67 , m_CommandHandlerRegistry()
68 , m_PacketVersionResolver()
69 , m_CommandHandler(1000,
71 m_CommandHandlerRegistry,
72 m_PacketVersionResolver)
74 , m_SendCounterPacket(m_BufferManager)
75 , m_SendThread(m_StateMachine, m_BufferManager, m_SendCounterPacket)
76 , m_SendTimelinePacket(m_BufferManager)
77 , m_PeriodicCounterCapture(m_Holder, m_SendCounterPacket, *this, m_CounterIdMap, m_BackendProfilingContexts)
78 , m_ConnectionAcknowledgedCommandHandler(0,
80 m_PacketVersionResolver.ResolvePacketVersion(0, 1).GetEncodedValue(),
85 m_BackendProfilingContexts)
86 , m_RequestCounterDirectoryCommandHandler(0,
88 m_PacketVersionResolver.ResolvePacketVersion(0, 3).GetEncodedValue(),
93 , m_PeriodicCounterSelectionCommandHandler(0,
95 m_PacketVersionResolver.ResolvePacketVersion(0, 4).GetEncodedValue(),
96 m_BackendProfilingContexts,
100 m_PeriodicCounterCapture,
104 , m_PerJobCounterSelectionCommandHandler(0,
106 m_PacketVersionResolver.ResolvePacketVersion(0, 5).GetEncodedValue(),
108 , m_ActivateTimelineReportingCommandHandler(0,
110 m_PacketVersionResolver.ResolvePacketVersion(0, 6)
112 m_SendTimelinePacket,
117 , m_DeactivateTimelineReportingCommandHandler(0,
119 m_PacketVersionResolver.ResolvePacketVersion(0, 7)
124 , m_TimelinePacketWriterFactory(m_BufferManager)
125 , m_MaxGlobalCounterId(
armnn::profiling::INFERENCES_RUN)
128 m_CommandHandlerRegistry.
RegisterFunctor(&m_ConnectionAcknowledgedCommandHandler);
131 m_CommandHandlerRegistry.
RegisterFunctor(&m_RequestCounterDirectoryCommandHandler);
134 m_CommandHandlerRegistry.
RegisterFunctor(&m_PeriodicCounterSelectionCommandHandler);
137 m_CommandHandlerRegistry.
RegisterFunctor(&m_PerJobCounterSelectionCommandHandler);
139 m_CommandHandlerRegistry.
RegisterFunctor(&m_ActivateTimelineReportingCommandHandler);
141 m_CommandHandlerRegistry.
RegisterFunctor(&m_DeactivateTimelineReportingCommandHandler);
149 bool resetProfilingService =
false);
160 std::shared_ptr<armnn::profiling::IBackendProfilingContext> profilingContext);
181 const std::vector<uint16_t>& counterIds,
182 const std::set<BackendId>& activeBackends);
186 uint32_t
AddCounterValue(uint16_t counterUid, uint32_t value)
override;
200 return m_SendCounterPacket;
209 return m_TimelineReporting;
222 void InitializeCounterValue(uint16_t counterUid);
227 void CheckCounterUid(uint16_t counterUid)
const;
231 std::atomic<bool> m_TimelineReporting;
260 uint16_t m_MaxGlobalCounterId;
274 backup = instance.m_ProfilingConnectionFactory.release();
275 instance.m_ProfilingConnectionFactory.reset(other);
279 return instance.m_ProfilingConnection.get();
292 return instance.m_BufferManager;
bool IsCounterRegistered(uint16_t counterUid) const override
std::shared_ptr< ILocalPacketHandler > ILocalPacketHandlerSharedPtr
uint32_t GetAbsoluteCounterValue(uint16_t counterUid) const override
std::list< std::atomic< uint32_t > > CounterValues
std::unordered_map< BackendId, std::shared_ptr< armnn::profiling::IBackendProfilingContext > > BackendProfilingContext
ProfilingState GetCurrentState() const
ICounterRegistry & GetCounterRegistry()
Strongly typed guids to distinguish between those generated at runtime, and those that are statically...
void NotifyBackendsForTimelineReporting() override
Copyright (c) 2020 ARM Limited.
ProfilingDynamicGuid NextGuid() override
Return the next random Guid in the sequence.
uint32_t IncrementCounterValue(uint16_t counterUid) override
std::unique_ptr< IProfilingConnection > IProfilingConnectionPtr
void AddLocalPacketHandler(ILocalPacketHandlerSharedPtr localPacketHandler)
bool WaitForPacketSent(ProfilingService &instance, uint32_t timeout=1000)
bool WaitForPacketSent(uint32_t timeout)
uint32_t GetDeltaCounterValue(uint16_t counterUid) override
uint32_t SubtractCounterValue(uint16_t counterUid, uint32_t value) override
std::vector< std::atomic< uint32_t > * > CounterIndices
void SwapProfilingConnectionFactory(ProfilingService &instance, IProfilingConnectionFactory *other, IProfilingConnectionFactory *&backup)
static ProfilingStaticGuid GetStaticId(const std::string &str)
void RegisterFunctor(CommandHandlerFunctor *functor, uint32_t familyId, uint32_t packetId, uint32_t version)
void SetCaptureData(uint32_t capturePeriod, const std::vector< uint16_t > &counterIds, const std::set< BackendId > &activeBackends)
std::unique_ptr< ISendTimelinePacket > GetSendTimelinePacket() const override
const ICounterMappings & GetCounterMappings() const override
void ResetExternalProfilingOptions(const ExternalProfilingOptions &options, bool resetProfilingService=false)
#define ARMNN_ASSERT(COND)
uint32_t AddCounterValue(uint16_t counterUid, uint32_t value) override
IRegisterCounterMapping & GetCounterMappingRegistry()
bool IsTimelineReportingEnabled()
BufferManager & GetBufferManager(ProfilingService &instance)
ProfilingService(Optional< IReportStructure &> reportStructure=EmptyOptional())
void SetCounterValue(uint16_t counterUid, uint32_t value) override
CaptureData GetCaptureData() override
EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...
bool IsProfilingEnabled() const override
IProfilingConnection * GetProfilingConnection(ProfilingService &instance)
static ProfilingDynamicGuid GetNextGuid()
void TransitionToState(ProfilingState newState)
std::unique_ptr< IProfilingConnectionFactory > IProfilingConnectionFactoryPtr
void TransitionToState(ProfilingService &instance, ProfilingState newState)
ISendCounterPacket & GetSendCounterPacket() override
void AddBackendProfilingContext(const BackendId backendId, std::shared_ptr< armnn::profiling::IBackendProfilingContext > profilingContext)
armnn::Runtime::CreationOptions::ExternalProfilingOptions options
const ICounterDirectory & GetCounterDirectory() const
ProfilingState ConfigureProfilingService(const ExternalProfilingOptions &options, bool resetProfilingService=false)
uint16_t GetCounterCount() const override
ProfilingStaticGuid GenerateStaticId(const std::string &str) override
Create a ProfilingStaticGuid based on a hash of the string.