xref: /aosp_15_r20/external/armnn/profiling/client/include/backends/IBackendProfiling.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <client/include/CounterStatus.hpp>
9*89c4ff92SAndroid Build Coastguard Worker #include <client/include/CounterValue.hpp>
10*89c4ff92SAndroid Build Coastguard Worker #include <client/include/IProfilingService.hpp>
11*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ISendCounterPacket.hpp>
12*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ISendTimelinePacket.hpp>
13*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ProfilingOptions.hpp>
14*89c4ff92SAndroid Build Coastguard Worker #include <client/include/Timestamp.hpp>
15*89c4ff92SAndroid Build Coastguard Worker 
16*89c4ff92SAndroid Build Coastguard Worker #include <common/include/IProfilingGuidGenerator.hpp>
17*89c4ff92SAndroid Build Coastguard Worker #include <common/include/Optional.hpp>
18*89c4ff92SAndroid Build Coastguard Worker 
19*89c4ff92SAndroid Build Coastguard Worker #include <memory>
20*89c4ff92SAndroid Build Coastguard Worker #include <vector>
21*89c4ff92SAndroid Build Coastguard Worker 
22*89c4ff92SAndroid Build Coastguard Worker namespace arm
23*89c4ff92SAndroid Build Coastguard Worker {
24*89c4ff92SAndroid Build Coastguard Worker 
25*89c4ff92SAndroid Build Coastguard Worker namespace pipe
26*89c4ff92SAndroid Build Coastguard Worker {
27*89c4ff92SAndroid Build Coastguard Worker 
28*89c4ff92SAndroid Build Coastguard Worker class IRegisterBackendCounters
29*89c4ff92SAndroid Build Coastguard Worker {
30*89c4ff92SAndroid Build Coastguard Worker public:
31*89c4ff92SAndroid Build Coastguard Worker     virtual void RegisterCategory(const std::string& categoryName) = 0;
32*89c4ff92SAndroid Build Coastguard Worker 
33*89c4ff92SAndroid Build Coastguard Worker     virtual uint16_t RegisterDevice(const std::string& deviceName,
34*89c4ff92SAndroid Build Coastguard Worker                                     uint16_t cores = 0,
35*89c4ff92SAndroid Build Coastguard Worker                                     const arm::pipe::Optional<std::string>& parentCategoryName
36*89c4ff92SAndroid Build Coastguard Worker                                         = arm::pipe::EmptyOptional()) = 0;
37*89c4ff92SAndroid Build Coastguard Worker 
38*89c4ff92SAndroid Build Coastguard Worker     virtual uint16_t RegisterCounterSet(const std::string& counterSetName,
39*89c4ff92SAndroid Build Coastguard Worker                                         uint16_t count = 0,
40*89c4ff92SAndroid Build Coastguard Worker                                         const arm::pipe::Optional<std::string>& parentCategoryName
41*89c4ff92SAndroid Build Coastguard Worker                                             = arm::pipe::EmptyOptional()) = 0;
42*89c4ff92SAndroid Build Coastguard Worker 
43*89c4ff92SAndroid Build Coastguard Worker     virtual uint16_t RegisterCounter(const uint16_t uid,
44*89c4ff92SAndroid Build Coastguard Worker         const std::string& parentCategoryName,
45*89c4ff92SAndroid Build Coastguard Worker         uint16_t counterClass,
46*89c4ff92SAndroid Build Coastguard Worker         uint16_t interpolation,
47*89c4ff92SAndroid Build Coastguard Worker         double multiplier,
48*89c4ff92SAndroid Build Coastguard Worker         const std::string& name,
49*89c4ff92SAndroid Build Coastguard Worker         const std::string& description,
50*89c4ff92SAndroid Build Coastguard Worker         const arm::pipe::Optional<std::string>& units      = arm::pipe::EmptyOptional(),
51*89c4ff92SAndroid Build Coastguard Worker         const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(),
52*89c4ff92SAndroid Build Coastguard Worker         const arm::pipe::Optional<uint16_t>& deviceUid     = arm::pipe::EmptyOptional(),
53*89c4ff92SAndroid Build Coastguard Worker         const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) = 0;
54*89c4ff92SAndroid Build Coastguard Worker 
~IRegisterBackendCounters()55*89c4ff92SAndroid Build Coastguard Worker     virtual ~IRegisterBackendCounters() {}
56*89c4ff92SAndroid Build Coastguard Worker };
57*89c4ff92SAndroid Build Coastguard Worker 
58*89c4ff92SAndroid Build Coastguard Worker class IBackendProfiling
59*89c4ff92SAndroid Build Coastguard Worker {
60*89c4ff92SAndroid Build Coastguard Worker public:
61*89c4ff92SAndroid Build Coastguard Worker     static std::unique_ptr<IBackendProfiling> CreateBackendProfiling(const ProfilingOptions& options,
62*89c4ff92SAndroid Build Coastguard Worker                                                                      IProfilingService& profilingService,
63*89c4ff92SAndroid Build Coastguard Worker                                                                      const std::string& backendId);
~IBackendProfiling()64*89c4ff92SAndroid Build Coastguard Worker     virtual ~IBackendProfiling()
65*89c4ff92SAndroid Build Coastguard Worker     {}
66*89c4ff92SAndroid Build Coastguard Worker 
67*89c4ff92SAndroid Build Coastguard Worker     virtual std::unique_ptr<IRegisterBackendCounters>
68*89c4ff92SAndroid Build Coastguard Worker             GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) = 0;
69*89c4ff92SAndroid Build Coastguard Worker 
70*89c4ff92SAndroid Build Coastguard Worker     virtual std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() = 0;
71*89c4ff92SAndroid Build Coastguard Worker 
72*89c4ff92SAndroid Build Coastguard Worker     virtual IProfilingGuidGenerator& GetProfilingGuidGenerator() = 0;
73*89c4ff92SAndroid Build Coastguard Worker 
74*89c4ff92SAndroid Build Coastguard Worker     virtual void ReportCounters(const std::vector<Timestamp>& counterValues) = 0;
75*89c4ff92SAndroid Build Coastguard Worker 
76*89c4ff92SAndroid Build Coastguard Worker     virtual CounterStatus GetCounterStatus(uint16_t backendCounterId) = 0;
77*89c4ff92SAndroid Build Coastguard Worker 
78*89c4ff92SAndroid Build Coastguard Worker     virtual std::vector<CounterStatus> GetActiveCounters() = 0;
79*89c4ff92SAndroid Build Coastguard Worker 
80*89c4ff92SAndroid Build Coastguard Worker     virtual bool IsProfilingEnabled() const = 0;
81*89c4ff92SAndroid Build Coastguard Worker 
82*89c4ff92SAndroid Build Coastguard Worker };
83*89c4ff92SAndroid Build Coastguard Worker 
84*89c4ff92SAndroid Build Coastguard Worker }    // namespace pipe
85*89c4ff92SAndroid Build Coastguard Worker 
86*89c4ff92SAndroid Build Coastguard Worker }    // namespace arm
87