diff options
Diffstat (limited to 'src/profiling')
-rw-r--r-- | src/profiling/ProfilingGuid.hpp | 4 | ||||
-rw-r--r-- | src/profiling/ProfilingGuidGenerator.hpp | 2 | ||||
-rw-r--r-- | src/profiling/TimelineUtilityMethods.cpp | 35 | ||||
-rw-r--r-- | src/profiling/TimelineUtilityMethods.hpp | 33 | ||||
-rw-r--r-- | src/profiling/test/TimelineUtilityMethodsTests.cpp | 45 |
5 files changed, 115 insertions, 4 deletions
diff --git a/src/profiling/ProfilingGuid.hpp b/src/profiling/ProfilingGuid.hpp index 84d2db7363..5deee11783 100644 --- a/src/profiling/ProfilingGuid.hpp +++ b/src/profiling/ProfilingGuid.hpp @@ -18,7 +18,7 @@ class ProfilingGuid public: ProfilingGuid(uint64_t guid) : m_Guid(guid) {} - operator uint64_t () const { return m_Guid; } + operator uint64_t() const { return m_Guid; } bool operator==(const ProfilingGuid& other) const { @@ -27,7 +27,7 @@ public: bool operator!=(const ProfilingGuid& other) const { - return !(*this == other); + return m_Guid != other.m_Guid; } bool operator<(const ProfilingGuid& other) const diff --git a/src/profiling/ProfilingGuidGenerator.hpp b/src/profiling/ProfilingGuidGenerator.hpp index ff27c8ebe7..38816faf3e 100644 --- a/src/profiling/ProfilingGuidGenerator.hpp +++ b/src/profiling/ProfilingGuidGenerator.hpp @@ -26,8 +26,6 @@ public: /// Create a ProfilingStaticGuid based on a hash of the string // NOTE: dummy implementation for the moment inline ProfilingStaticGuid GenerateStaticId(const std::string& str) override { return ProfilingStaticGuid(0); } - -private: }; } // namespace profiling diff --git a/src/profiling/TimelineUtilityMethods.cpp b/src/profiling/TimelineUtilityMethods.cpp new file mode 100644 index 0000000000..5ae0cf6ee1 --- /dev/null +++ b/src/profiling/TimelineUtilityMethods.cpp @@ -0,0 +1,35 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "TimelineUtilityMethods.hpp" +#include "ProfilingService.hpp" + +namespace armnn +{ + +namespace profiling +{ + +ProfilingStaticGuid TimelineUtilityMethods::DeclareLabel(const std::string& labelName) +{ + // Check that the label name is valid + if (labelName.empty()) + { + // The label name is invalid + throw InvalidArgumentException("Invalid label name, the label name cannot be empty"); + } + + // Generate a static GUID for the given label name + ProfilingStaticGuid labelGuid = ProfilingService::Instance().GenerateStaticId(labelName); + + // Send the new label to the external profiling service, this call throws in case of error + m_SendTimelinePacket.SendTimelineLabelBinaryPacket(labelGuid, labelName); + + return labelGuid; +} + +} // namespace profiling + +} // namespace armnn diff --git a/src/profiling/TimelineUtilityMethods.hpp b/src/profiling/TimelineUtilityMethods.hpp new file mode 100644 index 0000000000..22727c8b9a --- /dev/null +++ b/src/profiling/TimelineUtilityMethods.hpp @@ -0,0 +1,33 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "ISendTimelinePacket.hpp" +#include "ProfilingGuid.hpp" + +namespace armnn +{ + +namespace profiling +{ + +class TimelineUtilityMethods +{ +public: + TimelineUtilityMethods(ISendTimelinePacket& sendTimelinePacket) + : m_SendTimelinePacket(sendTimelinePacket) + {} + ~TimelineUtilityMethods() = default; + + ProfilingStaticGuid DeclareLabel(const std::string& labelName); + +private: + ISendTimelinePacket& m_SendTimelinePacket; +}; + +} // namespace profiling + +} // namespace armnn diff --git a/src/profiling/test/TimelineUtilityMethodsTests.cpp b/src/profiling/test/TimelineUtilityMethodsTests.cpp new file mode 100644 index 0000000000..c205712d62 --- /dev/null +++ b/src/profiling/test/TimelineUtilityMethodsTests.cpp @@ -0,0 +1,45 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "SendCounterPacketTests.hpp" + +#include <SendTimelinePacket.hpp> +#include <TimelineUtilityMethods.hpp> + +#include <boost/test/unit_test.hpp> + +using namespace armnn; +using namespace armnn::profiling; + +BOOST_AUTO_TEST_SUITE(TimelineUtilityMethodsTests) + +BOOST_AUTO_TEST_CASE(DeclareLabelTest1) +{ + MockBufferManager mockBufferManager(1024); + SendTimelinePacket sendTimelinePacket(mockBufferManager); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + + // Try declaring an invalid (empty) label + BOOST_CHECK_THROW(timelineUtilityMethods.DeclareLabel(""), InvalidArgumentException); + + // Try declaring an invalid (wrong SWTrace format) label + BOOST_CHECK_THROW(timelineUtilityMethods.DeclareLabel("inv@lid lab€l"), RuntimeException); + + // Declare a valid label + const std::string labelName = "valid label"; + ProfilingGuid labelGuid = 0; + BOOST_CHECK_NO_THROW(labelGuid = timelineUtilityMethods.DeclareLabel(labelName)); + // TODO when the implementation of the profiling GUID generator is done, enable the following test + //BOOST_CHECK(labelGuid != ProfilingGuid(0)); + + // TODO when the implementation of the profiling GUID generator is done, enable the following tests + // Try adding the same label as before + //ProfilingGuid newLabelGuid = 0; + //BOOST_CHECK_NO_THROW(labelGuid = timelineUtilityMethods.DeclareLabel(labelName)); + //BOOST_CHECK(newLabelGuid != ProfilingGuid(0)); + //BOOST_CHECK(newLabelGuid == labelGuid); +} + +BOOST_AUTO_TEST_SUITE_END() |