// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "RegisterBackendCounters.hpp" namespace armnn { namespace profiling { void RegisterBackendCounters::RegisterCategory(const std::string& categoryName, const Optional& deviceUid, const Optional& counterSetUid) { m_CounterDirectory.RegisterCategory(categoryName, deviceUid, counterSetUid); } uint16_t RegisterBackendCounters::RegisterDevice(const std::string& deviceName, uint16_t cores, const Optional& parentCategoryName) { const Device* devicePtr = m_CounterDirectory.RegisterDevice(deviceName, cores, parentCategoryName); return devicePtr->m_Uid; } uint16_t RegisterBackendCounters::RegisterCounterSet(const std::string& counterSetName, uint16_t count, const Optional& parentCategoryName) { const CounterSet* counterSetPtr = m_CounterDirectory.RegisterCounterSet(counterSetName, count, parentCategoryName); return counterSetPtr->m_Uid; } uint16_t RegisterBackendCounters::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, const Optional& numberOfCores, const Optional& deviceUid, const Optional& counterSetUid) { ++m_CurrentMaxGlobalCounterID; const Counter* counterPtr = m_CounterDirectory.RegisterCounter(m_BackendId, m_CurrentMaxGlobalCounterID, parentCategoryName, counterClass, interpolation, multiplier, name, description, units, numberOfCores, deviceUid, counterSetUid); m_CurrentMaxGlobalCounterID = counterPtr->m_MaxCounterUid; // register mappings IRegisterCounterMapping& counterIdMap = ProfilingService::Instance().GetCounterMappingRegistry(); uint16_t globalCounterId = counterPtr->m_Uid; if (globalCounterId == counterPtr->m_MaxCounterUid) { counterIdMap.RegisterMapping(globalCounterId, uid, m_BackendId); } else { uint16_t backendCounterId = uid; while (globalCounterId <= counterPtr->m_MaxCounterUid) { // register mapping // globalCounterId -> backendCounterId, m_BackendId counterIdMap.RegisterMapping(globalCounterId, backendCounterId, m_BackendId); ++globalCounterId; ++backendCounterId; } } return m_CurrentMaxGlobalCounterID; } } // namespace profiling } // namespace armnn