blob: 612f8dc02edb037d7fbd4b62434f772402994cad [file] [log] [blame]
Francis Murtagh68f78d82019-09-04 16:42:29 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
Matteo Martincighe0e6efc2019-10-04 17:17:42 +01005
Francis Murtagh68f78d82019-09-04 16:42:29 +01006#pragma once
7
8#include <mutex>
9#include <vector>
Finn Williams032bc742020-02-12 11:02:34 +000010#include <set>
11#include "ProfilingUtils.hpp"
Francis Murtagh68f78d82019-09-04 16:42:29 +010012
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace arm
Francis Murtagh68f78d82019-09-04 16:42:29 +010014{
15
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000016namespace pipe
Francis Murtagh68f78d82019-09-04 16:42:29 +010017{
18
19class CaptureData
20{
21public:
22 CaptureData()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010023 : m_CapturePeriod(0)
Finn Williams032bc742020-02-12 11:02:34 +000024 , m_CounterIds()
25 , m_ActiveBackends(){}
26 CaptureData(uint32_t capturePeriod, std::vector<uint16_t>& counterIds, std::set<armnn::BackendId> activeBackends)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010027 : m_CapturePeriod(capturePeriod)
Finn Williams032bc742020-02-12 11:02:34 +000028 , m_CounterIds(counterIds)
29 , m_ActiveBackends(activeBackends){}
Francis Murtagh68f78d82019-09-04 16:42:29 +010030 CaptureData(const CaptureData& captureData)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010031 : m_CapturePeriod(captureData.m_CapturePeriod)
Finn Williams032bc742020-02-12 11:02:34 +000032 , m_CounterIds(captureData.m_CounterIds)
33 , m_ActiveBackends(captureData.m_ActiveBackends){}
Francis Murtagh68f78d82019-09-04 16:42:29 +010034
Matteo Martincighe8485382019-10-10 14:08:21 +010035 CaptureData& operator=(const CaptureData& other);
Francis Murtagh68f78d82019-09-04 16:42:29 +010036
Finn Williams032bc742020-02-12 11:02:34 +000037 void SetActiveBackends(const std::set<armnn::BackendId>& activeBackends);
Francis Murtagh68f78d82019-09-04 16:42:29 +010038 void SetCapturePeriod(uint32_t capturePeriod);
Jim Flynn8355ec92019-09-17 12:29:50 +010039 void SetCounterIds(const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010040 uint32_t GetCapturePeriod() const;
Matteo Martincighe8485382019-10-10 14:08:21 +010041 const std::vector<uint16_t>& GetCounterIds() const;
Finn Williams032bc742020-02-12 11:02:34 +000042 const std::set<armnn::BackendId>& GetActiveBackends() const;
James Conroy2dcd3fe2020-02-06 18:34:52 +000043 bool IsCounterIdInCaptureData(uint16_t counterId);
Francis Murtagh68f78d82019-09-04 16:42:29 +010044
45private:
46 uint32_t m_CapturePeriod;
47 std::vector<uint16_t> m_CounterIds;
Finn Williams032bc742020-02-12 11:02:34 +000048 std::set<armnn::BackendId> m_ActiveBackends;
Francis Murtagh68f78d82019-09-04 16:42:29 +010049};
50
51class Holder
52{
53public:
54 Holder()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010055 : m_CaptureData() {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010056 CaptureData GetCaptureData() const;
Finn Williams032bc742020-02-12 11:02:34 +000057 void SetCaptureData(uint32_t capturePeriod,
58 const std::vector<uint16_t>& counterIds,
59 const std::set<armnn::BackendId>& activeBackends);
Francis Murtagh68f78d82019-09-04 16:42:29 +010060
61private:
62 mutable std::mutex m_CaptureThreadMutex;
63 CaptureData m_CaptureData;
64};
65
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000066} // namespace pipe
Francis Murtagh68f78d82019-09-04 16:42:29 +010067
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000068} // namespace arm