blob: dcafe3b2261dd69612a7762701c400eab16bef62 [file] [log] [blame]
//
// Copyright © 2020 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "RegisterBackendCounters.hpp"
namespace arm
{
namespace pipe
{
void RegisterBackendCounters::RegisterCategory(const std::string& categoryName)
{
m_CounterDirectory.RegisterCategory(categoryName);
}
uint16_t RegisterBackendCounters::RegisterDevice(const std::string& deviceName,
uint16_t cores,
const armnn::Optional<std::string>& 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 armnn::Optional<std::string>& 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 armnn::Optional<std::string>& units,
const armnn::Optional<uint16_t>& numberOfCores,
const armnn::Optional<uint16_t>& deviceUid,
const armnn::Optional<uint16_t>& 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 = m_ProfilingService.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 pipe
} // namespace arm