blob: 75bc8ef97f6400a3100ff7aee59080149b3e6aa1 [file] [log] [blame]
Jim Flynn97897022020-02-02 12:52:59 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <armnn/Optional.hpp>
9#include <armnn/BackendId.hpp>
10
11namespace armnn
12{
13
14namespace profiling
15{
16
17class ICounterRegistry
18{
19public:
20 virtual ~ICounterRegistry() {}
21
22 // Register profiling objects
23 virtual const Category* RegisterCategory (const std::string& categoryName,
24 const Optional<uint16_t>& deviceUid,
25 const Optional<uint16_t>& counterSetUid) = 0;
26
27 virtual const Device* RegisterDevice (const std::string& deviceName,
28 uint16_t cores,
29 const Optional<std::string>& parentCategoryName) = 0;
30
31 virtual const CounterSet* RegisterCounterSet(const std::string& counterSetName,
32 uint16_t count,
33 const Optional<std::string>& parentCategoryName) = 0;
34
35 virtual const Counter* RegisterCounter(const BackendId& backendId,
36 const uint16_t uid,
37 const std::string& parentCategoryName,
38 uint16_t counterClass,
39 uint16_t interpolation,
40 double multiplier,
41 const std::string& name,
42 const std::string& description,
43 const Optional<std::string>& units,
44 const Optional<uint16_t>& numberOfCores,
45 const Optional<uint16_t>& deviceUid,
46 const Optional<uint16_t>& counterSetUid) = 0;
47
48};
49
50} // namespace profiling
51
52} // namespace armnn