aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/CounterDirectory.hpp
diff options
context:
space:
mode:
authorAron Virginas-Tar <Aron.Virginas-Tar@arm.com>2019-08-22 18:10:52 +0100
committerAron Virginas-Tar <Aron.Virginas-Tar@arm.com>2019-08-23 15:19:33 +0100
commit4e5fc1fb6c74fa6e4dcb24639db8fafd69a0a065 (patch)
tree17c793909c046e769d46fe65ddcaf59a51174acc /src/profiling/CounterDirectory.hpp
parent00dda4a66c10a56b02bdd534ba3b5fdb27527ebc (diff)
downloadarmnn-4e5fc1fb6c74fa6e4dcb24639db8fafd69a0a065.tar.gz
IVGCVSW-3410 Create Counter Directory metadata classes
* Created classes Device, Counter, Category, CounterDirectory Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> Change-Id: Iaec4b0e154d962983c60460714bafcc1fb16f47e
Diffstat (limited to 'src/profiling/CounterDirectory.hpp')
-rw-r--r--src/profiling/CounterDirectory.hpp104
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