aboutsummaryrefslogtreecommitdiff
path: root/include/armnn/Types.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/armnn/Types.hpp')
-rw-r--r--include/armnn/Types.hpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/include/armnn/Types.hpp b/include/armnn/Types.hpp
index 51162e6cf3..b2aa52edb2 100644
--- a/include/armnn/Types.hpp
+++ b/include/armnn/Types.hpp
@@ -7,6 +7,7 @@
#include <array>
#include <functional>
#include <memory>
+#include <stdint.h>
#include "BackendId.hpp"
#include "Exceptions.hpp"
@@ -219,4 +220,96 @@ class ITensorHandle;
/// @param tensorHandle - TensorHandle for the input tensor to the Debug layer
using DebugCallbackFunction = std::function<void(LayerGuid guid, unsigned int slotIndex, ITensorHandle* tensorHandle)>;
+
+namespace profiling
+{
+
+class ProfilingGuid
+{
+public:
+ ProfilingGuid(uint64_t guid) : m_Guid(guid) {}
+
+ operator uint64_t() const { return m_Guid; }
+
+ bool operator==(const ProfilingGuid& other) const
+ {
+ return m_Guid == other.m_Guid;
+ }
+
+ bool operator!=(const ProfilingGuid& other) const
+ {
+ return m_Guid != other.m_Guid;
+ }
+
+ bool operator<(const ProfilingGuid& other) const
+ {
+ return m_Guid < other.m_Guid;
+ }
+
+ bool operator<=(const ProfilingGuid& other) const
+ {
+ return m_Guid <= other.m_Guid;
+ }
+
+ bool operator>(const ProfilingGuid& other) const
+ {
+ return m_Guid > other.m_Guid;
+ }
+
+ bool operator>=(const ProfilingGuid& other) const
+ {
+ return m_Guid >= other.m_Guid;
+ }
+
+protected:
+ uint64_t m_Guid;
+};
+
+/// Strongly typed guids to distinguish between those generated at runtime, and those that are statically defined.
+struct ProfilingDynamicGuid : public ProfilingGuid
+{
+ using ProfilingGuid::ProfilingGuid;
+};
+
+struct ProfilingStaticGuid : public ProfilingGuid
+{
+ using ProfilingGuid::ProfilingGuid;
+};
+
+} // namespace profiling
+
} // namespace armnn
+
+
+namespace std
+{
+// make ProfilingGuid hashable
+template<>
+struct hash<armnn::profiling::ProfilingGuid>
+{
+ std::size_t operator()(armnn::profiling::ProfilingGuid const& guid) const noexcept
+ {
+ return hash<uint64_t>()(uint64_t(guid));
+ }
+};
+
+// make ProfilingDynamicGuid hashable
+template<>
+struct hash<armnn::profiling::ProfilingDynamicGuid>
+{
+ std::size_t operator()(armnn::profiling::ProfilingDynamicGuid const& guid) const noexcept
+ {
+ return hash<uint64_t>()(uint64_t(guid));
+ }
+};
+
+// make ProfilingStaticGuid hashable
+template<>
+struct hash<armnn::profiling::ProfilingStaticGuid>
+{
+ std::size_t operator()(armnn::profiling::ProfilingStaticGuid const& guid) const noexcept
+ {
+ return hash<uint64_t>()(uint64_t(guid));
+ }
+};
+}