1 // 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 11 namespace armnn 12 { 13 14 namespace profiling 15 { 16 17 class ICounterRegistry 18 { 19 public: ~ICounterRegistry()20 virtual ~ICounterRegistry() {} 21 22 // Register profiling objects 23 virtual const Category* RegisterCategory (const std::string& categoryName) = 0; 24 25 virtual const Device* RegisterDevice (const std::string& deviceName, 26 uint16_t cores, 27 const Optional<std::string>& parentCategoryName) = 0; 28 29 virtual const CounterSet* RegisterCounterSet(const std::string& counterSetName, 30 uint16_t count, 31 const Optional<std::string>& parentCategoryName) = 0; 32 33 virtual const Counter* RegisterCounter(const BackendId& backendId, 34 const uint16_t uid, 35 const std::string& parentCategoryName, 36 uint16_t counterClass, 37 uint16_t interpolation, 38 double multiplier, 39 const std::string& name, 40 const std::string& description, 41 const Optional<std::string>& units, 42 const Optional<uint16_t>& numberOfCores, 43 const Optional<uint16_t>& deviceUid, 44 const Optional<uint16_t>& counterSetUid) = 0; 45 46 }; 47 48 } // namespace profiling 49 50 } // namespace armnn 51