diff options
Diffstat (limited to 'src/profiling')
-rw-r--r-- | src/profiling/ProfilingGuid.hpp | 70 | ||||
-rw-r--r-- | src/profiling/ProfilingGuidGenerator.hpp | 34 | ||||
-rw-r--r-- | src/profiling/test/ProfilingGuidTest.cpp | 62 |
3 files changed, 166 insertions, 0 deletions
diff --git a/src/profiling/ProfilingGuid.hpp b/src/profiling/ProfilingGuid.hpp new file mode 100644 index 0000000000..84d2db7363 --- /dev/null +++ b/src/profiling/ProfilingGuid.hpp @@ -0,0 +1,70 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <stdint.h> + +namespace armnn +{ + +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 !(*this == other); + } + + 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 diff --git a/src/profiling/ProfilingGuidGenerator.hpp b/src/profiling/ProfilingGuidGenerator.hpp new file mode 100644 index 0000000000..7c43cab67b --- /dev/null +++ b/src/profiling/ProfilingGuidGenerator.hpp @@ -0,0 +1,34 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "ProfilingGuid.hpp" + +namespace armnn +{ + +namespace profiling +{ + +class ProfilingGuidGenerator +{ +public: + /// Construct a generator with the default address space static/dynamic partitioning + ProfilingGuidGenerator() : m_Sequence(0) {} + + /// Return the next random Guid in the sequence + ProfilingDynamicGuid NextGuid(); + + /// Create a ProfilingStaticGuid based on a hash of the name + ProfilingStaticGuid GenerateStaticId(const char* name); + +private: + uint64_t m_Sequence; +}; + +} // namespace profiling + +} // namespace armnn diff --git a/src/profiling/test/ProfilingGuidTest.cpp b/src/profiling/test/ProfilingGuidTest.cpp new file mode 100644 index 0000000000..fa0143572b --- /dev/null +++ b/src/profiling/test/ProfilingGuidTest.cpp @@ -0,0 +1,62 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "ProfilingGuid.hpp" + +#include <boost/test/unit_test.hpp> + +using namespace armnn::profiling; + +BOOST_AUTO_TEST_SUITE(ProfilingGuidTests) + +BOOST_AUTO_TEST_CASE(GuidTest) +{ + ProfilingGuid guid0(0); + ProfilingGuid guid1(1); + ProfilingGuid guid2(1); + + BOOST_TEST(guid0 != guid1); + BOOST_TEST(guid1 == guid2); + BOOST_TEST(guid0 < guid1); + BOOST_TEST(guid0 <= guid1); + BOOST_TEST(guid1 <= guid2); + BOOST_TEST(guid1 > guid0); + BOOST_TEST(guid1 >= guid0); + BOOST_TEST(guid1 >= guid2); +} + +BOOST_AUTO_TEST_CASE(StaticGuidTest) +{ + ProfilingStaticGuid guid0(0); + ProfilingStaticGuid guid1(1); + ProfilingStaticGuid guid2(1); + + BOOST_TEST(guid0 != guid1); + BOOST_TEST(guid1 == guid2); + BOOST_TEST(guid0 < guid1); + BOOST_TEST(guid0 <= guid1); + BOOST_TEST(guid1 <= guid2); + BOOST_TEST(guid1 > guid0); + BOOST_TEST(guid1 >= guid0); + BOOST_TEST(guid1 >= guid2); +} + +BOOST_AUTO_TEST_CASE(DynamicGuidTest) +{ + ProfilingDynamicGuid guid0(0); + ProfilingDynamicGuid guid1(1); + ProfilingDynamicGuid guid2(1); + + BOOST_TEST(guid0 != guid1); + BOOST_TEST(guid1 == guid2); + BOOST_TEST(guid0 < guid1); + BOOST_TEST(guid0 <= guid1); + BOOST_TEST(guid1 <= guid2); + BOOST_TEST(guid1 > guid0); + BOOST_TEST(guid1 >= guid0); + BOOST_TEST(guid1 >= guid2); +} + +BOOST_AUTO_TEST_SUITE_END() |