diff options
Diffstat (limited to 'src/profiling/CounterDirectory.hpp')
-rw-r--r-- | src/profiling/CounterDirectory.hpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/profiling/CounterDirectory.hpp b/src/profiling/CounterDirectory.hpp new file mode 100644 index 0000000000..bbe7bcf6ef --- /dev/null +++ b/src/profiling/CounterDirectory.hpp @@ -0,0 +1,104 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <atomic> +#include <string> +#include <vector> + +namespace armnn +{ + +namespace profiling +{ + +class Device +{ +public: + uint16_t m_Uid; + std::string m_Name; + uint16_t m_Cores; +}; + +class Counter +{ +public: + uint16_t m_Uid; + uint16_t m_MaxCounterUid; + uint16_t m_Class; + uint16_t m_Interpolation; + float m_Multiplier; + std::string m_Name; + std::string m_Description; + std::string m_Units; +}; + +class Category +{ +public: + std::string m_Name; +}; + +class CounterDirectory final +{ +public: + CounterDirectory(uint16_t uid, + const std::string& name, + uint16_t deviceCount, + uint16_t counterCount, + uint16_t categoryCount); + + ~CounterDirectory() = default; + + uint16_t GetUid() const; + const std::string& GetName() const; + + uint16_t GetDeviceCount() const; + uint16_t GetCounterCount() const; + uint16_t GetCategoryCount() const; + + void GetDeviceValue(uint16_t index, uint32_t& value) const; + void SetDeviceValue(uint16_t index, uint32_t value); + + void GetDeviceObject(uint16_t index, Device* counter) const; + void SetDeviceObject(uint16_t index, Device* counter); + + void GetCounterValue(uint16_t index, uint32_t& value) const; + void SetCounterValue(uint16_t index, uint32_t value); + + void GetCounterObject(uint16_t index, Counter* counter) const; + void SetCounterObject(uint16_t index, Counter* counter); + + void GetCategoryValue(uint16_t index, uint32_t& value) const; + void SetCategoryValue(uint16_t index, uint32_t value); + + void GetCategoryObject(uint16_t index, Category* counter) const; + void SetCategoryObject(uint16_t index, Category* counter); + +private: + uint16_t m_Uid; + std::string m_Name; + + uint16_t m_DeviceCount; + uint16_t m_CounterCount; + uint16_t m_CategoryCount; + + std::vector<std::atomic<uint32_t>> m_DeviceIds; + std::vector<std::atomic<uint32_t>> m_CounterIds; + std::vector<std::atomic<uint32_t>> m_CategoryIds; + + std::vector<std::atomic<Device*>> m_DeviceObjects; + std::vector<std::atomic<Counter*>> m_CounterObjects; + std::vector<std::atomic<Category*>> m_CategoryObjects; + + void CheckDeviceIndex(uint16_t index) const; + void CheckCounterIndex(uint16_t index) const; + void CheckCategoryIndex(uint16_t index) const; +}; + +} // namespace profiling + +} // namespace armnn |