ArmNN
 21.02
PeriodicCounterCapture.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
9 #include "Holder.hpp"
10 #include <Packet.hpp>
11 #include "SendCounterPacket.hpp"
12 #include "ICounterValues.hpp"
13 #include "CounterIdMap.hpp"
14 
15 #include <atomic>
16 #include <mutex>
17 #include <thread>
19 
20 namespace armnn
21 {
22 
23 namespace profiling
24 {
25 
27 {
28 public:
30  ISendCounterPacket& packet,
31  IReadCounterValues& readCounterValue,
32  const ICounterMappings& counterIdMap,
33  const std::unordered_map<armnn::BackendId,
34  std::shared_ptr<armnn::profiling::IBackendProfilingContext>>&
35  backendProfilingContexts)
36  : m_CaptureDataHolder(data)
37  , m_IsRunning(false)
38  , m_KeepRunning(false)
39  , m_ReadCounterValues(readCounterValue)
40  , m_SendCounterPacket(packet)
41  , m_CounterIdMap(counterIdMap)
42  , m_BackendProfilingContexts(backendProfilingContexts)
43  {}
45 
46  void Start() override;
47  void Stop() override;
48  bool IsRunning() const { return m_IsRunning; }
49 
50 private:
51  CaptureData ReadCaptureData();
52  void Capture(IReadCounterValues& readCounterValues);
53  void DispatchPeriodicCounterCapturePacket(
54  const armnn::BackendId& backendId, const std::vector<Timestamp>& timestampValues);
55 
56  const Holder& m_CaptureDataHolder;
57  bool m_IsRunning;
58  std::atomic<bool> m_KeepRunning;
59  std::thread m_PeriodCaptureThread;
60  IReadCounterValues& m_ReadCounterValues;
61  ISendCounterPacket& m_SendCounterPacket;
62  const ICounterMappings& m_CounterIdMap;
63  const std::unordered_map<armnn::BackendId,
64  std::shared_ptr<armnn::profiling::IBackendProfilingContext>>& m_BackendProfilingContexts;
65 };
66 
67 } // namespace profiling
68 
69 } // namespace armnn
DataLayout::NCHW false
Copyright (c) 2021 ARM Limited and Contributors.
PeriodicCounterCapture(const Holder &data, ISendCounterPacket &packet, IReadCounterValues &readCounterValue, const ICounterMappings &counterIdMap, const std::unordered_map< armnn::BackendId, std::shared_ptr< armnn::profiling::IBackendProfilingContext >> &backendProfilingContexts)