| // |
| // 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 |