// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "armnn/backends/profiling/IBackendProfiling.hpp" #include "CounterIdMap.hpp" #include "CounterDirectory.hpp" #include "ProfilingService.hpp" namespace armnn { namespace profiling { class RegisterBackendCounters : public IRegisterBackendCounters { public: RegisterBackendCounters(uint16_t currentMaxGlobalCounterID, const BackendId& backendId) : m_CurrentMaxGlobalCounterID(currentMaxGlobalCounterID), m_CounterDirectory(ProfilingService::Instance().GetCounterRegistry()), m_BackendId(backendId) {} ~RegisterBackendCounters() = default; void RegisterCategory(const std::string& categoryName, const Optional& deviceUid = EmptyOptional(), const Optional& counterSetUid = EmptyOptional()) override; uint16_t RegisterDevice(const std::string& deviceName, uint16_t cores = 0, const Optional& parentCategoryName = EmptyOptional()) override; uint16_t RegisterCounterSet(const std::string& counterSetName, uint16_t count = 0, const Optional& parentCategoryName = EmptyOptional()) override; uint16_t RegisterCounter(const uint16_t uid, const std::string& parentCategoryName, uint16_t counterClass, uint16_t interpolation, double multiplier, const std::string& name, const std::string& description, const Optional& units = EmptyOptional(), const Optional& numberOfCores = EmptyOptional(), const Optional& deviceUid = EmptyOptional(), const Optional& counterSetUid = EmptyOptional()) override; private: uint16_t m_CurrentMaxGlobalCounterID; ICounterRegistry& m_CounterDirectory; const BackendId& m_BackendId; }; } // namespace profiling } // namespace armnn