IVGCVSW-6851 Move DirectoryCaptureCommandHandler to the profiling server library
Change-Id: Ib14fdcca15f40fedc0f992b0fd882458dc58c9ba
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
diff --git a/Android.mk b/Android.mk
index ee2fedd..b0436bd 100644
--- a/Android.mk
+++ b/Android.mk
@@ -110,6 +110,7 @@
profiling/common/src/CommandHandlerKey.cpp \
profiling/common/src/CommandHandlerRegistry.cpp \
profiling/common/src/CommonProfilingUtils.cpp \
+ profiling/common/src/CounterDirectory.cpp \
profiling/common/src/LabelsAndEventClasses.cpp \
profiling/common/src/Logging.cpp \
profiling/common/src/NetworkSockets.cpp \
@@ -117,6 +118,7 @@
profiling/common/src/Processes.cpp \
profiling/common/src/SwTrace.cpp \
profiling/common/src/Threads.cpp \
+ profiling/server/src/timelineDecoder/DirectoryCaptureCommandHandler.cpp \
profiling/server/src/timelineDecoder/TimelineCaptureCommandHandler.cpp \
profiling/server/src/timelineDecoder/TimelineDecoder.cpp \
profiling/server/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp \
@@ -239,10 +241,8 @@
src/profiling/BufferManager.cpp \
src/profiling/CommandHandler.cpp \
src/profiling/ConnectionAcknowledgedCommandHandler.cpp \
- src/profiling/CounterDirectory.cpp \
src/profiling/CounterIdMap.cpp \
src/profiling/DeactivateTimelineReportingCommandHandler.cpp \
- src/profiling/DirectoryCaptureCommandHandler.cpp \
src/profiling/FileOnlyProfilingConnection.cpp \
src/profiling/Holder.cpp \
src/profiling/IProfilingService.cpp \
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c739828..e2fa9f3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -422,23 +422,16 @@
src/profiling/CommandHandler.hpp
src/profiling/ConnectionAcknowledgedCommandHandler.cpp
src/profiling/ConnectionAcknowledgedCommandHandler.hpp
- src/profiling/Counter.hpp
- src/profiling/CounterDirectory.cpp
- src/profiling/CounterDirectory.hpp
src/profiling/CounterIdMap.cpp
src/profiling/CounterIdMap.hpp
src/profiling/DeactivateTimelineReportingCommandHandler.cpp
src/profiling/DeactivateTimelineReportingCommandHandler.hpp
- src/profiling/DirectoryCaptureCommandHandler.cpp
- src/profiling/DirectoryCaptureCommandHandler.hpp
src/profiling/FileOnlyProfilingConnection.cpp
src/profiling/FileOnlyProfilingConnection.hpp
src/profiling/Holder.cpp
src/profiling/Holder.hpp
src/profiling/IBufferManager.hpp
src/profiling/IConsumer.hpp
- src/profiling/ICounterDirectory.hpp
- src/profiling/ICounterRegistry.hpp
src/profiling/ICounterValues.hpp
src/profiling/IInitialiseProfilingService.hpp
src/profiling/INotifyBackends.hpp
diff --git a/profiling/common/include/CommonProfilingUtils.hpp b/profiling/common/include/CommonProfilingUtils.hpp
index 68fe6bb..c07beaf 100644
--- a/profiling/common/include/CommonProfilingUtils.hpp
+++ b/profiling/common/include/CommonProfilingUtils.hpp
@@ -4,6 +4,8 @@
//
#pragma once
+#include "ICounterDirectory.hpp"
+
#include <cstdint>
#include <string>
@@ -34,5 +36,11 @@
std::string CentreAlignFormatting(const std::string& stringToPass, const int spacingWidth);
+void PrintCounterDirectory(ICounterDirectory& counterDirectory);
+
+uint16_t GetNextUid(bool peekOnly = false);
+
+ std::vector<uint16_t> GetNextCounterUids(uint16_t firstUid, uint16_t cores);
+
} // namespace pipe
-} // namespace arm
\ No newline at end of file
+} // namespace arm
diff --git a/src/profiling/Counter.hpp b/profiling/common/include/Counter.hpp
similarity index 100%
rename from src/profiling/Counter.hpp
rename to profiling/common/include/Counter.hpp
diff --git a/src/profiling/CounterDirectory.hpp b/profiling/common/include/CounterDirectory.hpp
similarity index 100%
rename from src/profiling/CounterDirectory.hpp
rename to profiling/common/include/CounterDirectory.hpp
diff --git a/src/profiling/ICounterDirectory.hpp b/profiling/common/include/ICounterDirectory.hpp
similarity index 100%
rename from src/profiling/ICounterDirectory.hpp
rename to profiling/common/include/ICounterDirectory.hpp
diff --git a/src/profiling/ICounterRegistry.hpp b/profiling/common/include/ICounterRegistry.hpp
similarity index 100%
rename from src/profiling/ICounterRegistry.hpp
rename to profiling/common/include/ICounterRegistry.hpp
diff --git a/profiling/common/src/CMakeLists.txt b/profiling/common/src/CMakeLists.txt
index e02c785..264902c 100644
--- a/profiling/common/src/CMakeLists.txt
+++ b/profiling/common/src/CMakeLists.txt
@@ -10,6 +10,7 @@
CommandHandlerKey.cpp
CommandHandlerRegistry.cpp
CommonProfilingUtils.cpp
+ CounterDirectory.cpp
LabelsAndEventClasses.cpp
Logging.cpp
NetworkSockets.cpp
diff --git a/profiling/common/src/CommonProfilingUtils.cpp b/profiling/common/src/CommonProfilingUtils.cpp
index fe98e0a..01bc461 100644
--- a/profiling/common/src/CommonProfilingUtils.cpp
+++ b/profiling/common/src/CommonProfilingUtils.cpp
@@ -5,7 +5,10 @@
#include <common/include/Assert.hpp>
#include <common/include/CommonProfilingUtils.hpp>
+#include <common/include/ProfilingException.hpp>
+#include <iostream>
+#include <limits>
#include <sstream>
namespace arm
@@ -140,6 +143,242 @@
return outputStream.str();
}
+void PrintDeviceDetails(const std::pair<const unsigned short, std::unique_ptr<Device>>& devicePair)
+{
+ std::string body;
+
+ body.append(CentreAlignFormatting(devicePair.second->m_Name, 20));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(devicePair.first), 13));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(devicePair.second->m_Cores), 10));
+ body.append("\n");
+
+ std::cout << std::string(body.size(), '-') << "\n";
+ std::cout<< body;
+}
+
+void PrintCounterSetDetails(const std::pair<const unsigned short, std::unique_ptr<CounterSet>>& counterSetPair)
+{
+ std::string body;
+
+ body.append(CentreAlignFormatting(counterSetPair.second->m_Name, 20));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counterSetPair.first), 13));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counterSetPair.second->m_Count), 10));
+ body.append("\n");
+
+ std::cout << std::string(body.size(), '-') << "\n";
+
+ std::cout<< body;
+}
+
+void PrintCounterDetails(std::shared_ptr<Counter>& counter)
+{
+ std::string body;
+
+ body.append(CentreAlignFormatting(counter->m_Name, 20));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(counter->m_Description, 50));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(counter->m_Units, 14));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_Uid), 6));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_MaxCounterUid), 10));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_Class), 8));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_Interpolation), 14));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_Multiplier), 20));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_CounterSetUid), 16));
+ body.append(" | ");
+ body.append(CentreAlignFormatting(std::to_string(counter->m_DeviceUid), 14));
+
+ body.append("\n");
+
+ std::cout << std::string(body.size(), '-') << "\n";
+
+ std::cout << body;
+}
+
+void PrintCategoryDetails(const std::unique_ptr<Category>& category,
+ std::unordered_map<unsigned short, std::shared_ptr<Counter>> counterMap)
+{
+ std::string categoryBody;
+ std::string categoryHeader;
+
+ categoryHeader.append(CentreAlignFormatting("Name", 20));
+ categoryHeader.append(" | ");
+ categoryHeader.append(CentreAlignFormatting("Event Count", 14));
+ categoryHeader.append("\n");
+
+ categoryBody.append(CentreAlignFormatting(category->m_Name, 20));
+ categoryBody.append(" | ");
+ categoryBody.append(CentreAlignFormatting(std::to_string(category->m_Counters.size()), 14));
+
+ std::cout << "\n" << "\n";
+ std::cout << CentreAlignFormatting("CATEGORY", static_cast<int>(categoryHeader.size()));
+ std::cout << "\n";
+ std::cout << std::string(categoryHeader.size(), '=') << "\n";
+
+ std::cout << categoryHeader;
+
+ std::cout << std::string(categoryBody.size(), '-') << "\n";
+
+ std::cout << categoryBody;
+
+ std::string counterHeader;
+
+ counterHeader.append(CentreAlignFormatting("Counter Name", 20));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Description", 50));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Units", 14));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("UID", 6));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Max UID", 10));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Class", 8));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Interpolation", 14));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Multiplier", 20));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Counter set UID", 16));
+ counterHeader.append(" | ");
+ counterHeader.append(CentreAlignFormatting("Device UID", 14));
+ counterHeader.append("\n");
+
+ std::cout << "\n" << "\n";
+ std::cout << CentreAlignFormatting("EVENTS IN CATEGORY: " + category->m_Name,
+ static_cast<int>(counterHeader.size()));
+ std::cout << "\n";
+ std::cout << std::string(counterHeader.size(), '=') << "\n";
+ std::cout << counterHeader;
+ for (auto& it: category->m_Counters) {
+ auto search = counterMap.find(it);
+ if(search != counterMap.end()) {
+ PrintCounterDetails(search->second);
+ }
+ }
+}
+
+void PrintCounterDirectory(ICounterDirectory& counterDirectory)
+{
+ std::string devicesHeader;
+
+ devicesHeader.append(CentreAlignFormatting("Device name", 20));
+ devicesHeader.append(" | ");
+ devicesHeader.append(CentreAlignFormatting("UID", 13));
+ devicesHeader.append(" | ");
+ devicesHeader.append(CentreAlignFormatting("Cores", 10));
+ devicesHeader.append("\n");
+
+ std::cout << "\n" << "\n";
+ std::cout << CentreAlignFormatting("DEVICES", static_cast<int>(devicesHeader.size()));
+ std::cout << "\n";
+ std::cout << std::string(devicesHeader.size(), '=') << "\n";
+ std::cout << devicesHeader;
+ for (auto& it: counterDirectory.GetDevices()) {
+ PrintDeviceDetails(it);
+ }
+
+ std::string counterSetHeader;
+
+ counterSetHeader.append(CentreAlignFormatting("Counter set name", 20));
+ counterSetHeader.append(" | ");
+ counterSetHeader.append(CentreAlignFormatting("UID", 13));
+ counterSetHeader.append(" | ");
+ counterSetHeader.append(CentreAlignFormatting("Count", 10));
+ counterSetHeader.append("\n");
+
+ std::cout << "\n" << "\n";
+ std::cout << CentreAlignFormatting("COUNTER SETS", static_cast<int>(counterSetHeader.size()));
+ std::cout << "\n";
+ std::cout << std::string(counterSetHeader.size(), '=') << "\n";
+
+ std::cout << counterSetHeader;
+
+ for (auto& it: counterDirectory.GetCounterSets()) {
+ PrintCounterSetDetails(it);
+ }
+
+ auto counters = counterDirectory.GetCounters();
+ for (auto& it: counterDirectory.GetCategories()) {
+ PrintCategoryDetails(it, counters);
+ }
+ std::cout << "\n";
+}
+
+namespace
+{
+
+void ThrowIfCantGenerateNextUid(uint16_t uid, uint16_t cores = 0)
+{
+ // Check that it is possible to generate the next UID without causing an overflow
+ switch (cores)
+ {
+ case 0:
+ case 1:
+ // Number of cores not specified or set to 1 (a value of zero indicates the device is not capable of
+ // running multiple parallel workloads and will not provide multiple streams of data for each event)
+ if (uid == std::numeric_limits<uint16_t>::max())
+ {
+ throw arm::pipe::ProfilingException("Generating the next UID for profiling would result in an overflow");
+ }
+ break;
+ default: // cores > 1
+ // Multiple cores available, as max_counter_uid has to be set to: counter_uid + cores - 1, the maximum
+ // allowed value for a counter UID is consequently: uint16_t_max - cores + 1
+ if (uid >= std::numeric_limits<uint16_t>::max() - cores + 1)
+ {
+ throw arm::pipe::ProfilingException("Generating the next UID for profiling would result in an overflow");
+ }
+ break;
+ }
+}
+
+} // Anonymous namespace
+
+uint16_t GetNextUid(bool peekOnly)
+{
+ // The UID used for profiling objects and events. The first valid UID is 1, as 0 is a reserved value
+ static uint16_t uid = 1;
+
+ // Check that it is possible to generate the next UID without causing an overflow (throws in case of error)
+ ThrowIfCantGenerateNextUid(uid);
+
+ if (peekOnly)
+ {
+ // Peek only
+ return uid;
+ }
+ else
+ {
+ // Get the next UID
+ return uid++;
+ }
+}
+
+std::vector<uint16_t> GetNextCounterUids(uint16_t firstUid, uint16_t cores)
+{
+ // Check that it is possible to generate the next counter UID without causing an overflow (throws in case of error)
+ ThrowIfCantGenerateNextUid(firstUid, cores);
+
+ // Get the next counter UIDs
+ size_t counterUidsSize = cores == 0 ? 1 : cores;
+ std::vector<uint16_t> counterUids(counterUidsSize, 0);
+ for (size_t i = 0; i < counterUidsSize; i++)
+ {
+ counterUids[i] = firstUid++;
+ }
+ return counterUids;
+}
} // namespace pipe
-} // namespace arm
\ No newline at end of file
+} // namespace arm
diff --git a/src/profiling/CounterDirectory.cpp b/profiling/common/src/CounterDirectory.cpp
similarity index 99%
rename from src/profiling/CounterDirectory.cpp
rename to profiling/common/src/CounterDirectory.cpp
index 0f6147f..f338858 100644
--- a/src/profiling/CounterDirectory.cpp
+++ b/profiling/common/src/CounterDirectory.cpp
@@ -3,8 +3,8 @@
// SPDX-License-Identifier: MIT
//
-#include "CounterDirectory.hpp"
-#include "ProfilingUtils.hpp"
+#include <common/include/CounterDirectory.hpp>
+#include <common/include/CommonProfilingUtils.hpp>
#include <common/include/Assert.hpp>
#include <common/include/SwTrace.hpp>
diff --git a/src/profiling/DirectoryCaptureCommandHandler.hpp b/profiling/server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp
similarity index 97%
rename from src/profiling/DirectoryCaptureCommandHandler.hpp
rename to profiling/server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp
index 007cf05..de10ec8 100644
--- a/src/profiling/DirectoryCaptureCommandHandler.hpp
+++ b/profiling/server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp
@@ -5,9 +5,8 @@
#pragma once
-#include "CounterDirectory.hpp"
-
#include <common/include/CommandHandlerFunctor.hpp>
+#include <common/include/CounterDirectory.hpp>
#include <atomic>
diff --git a/profiling/server/src/timelineDecoder/CMakeLists.txt b/profiling/server/src/timelineDecoder/CMakeLists.txt
index 7154722..4ac68a5 100644
--- a/profiling/server/src/timelineDecoder/CMakeLists.txt
+++ b/profiling/server/src/timelineDecoder/CMakeLists.txt
@@ -6,6 +6,7 @@
if(BUILD_TIMELINE_DECODER)
set(timelineDecoder_sources)
list(APPEND timelineDecoder_sources
+ DirectoryCaptureCommandHandler.cpp
TimelineCaptureCommandHandler.cpp
TimelineDecoder.cpp
TimelineDirectoryCaptureCommandHandler.cpp)
diff --git a/src/profiling/DirectoryCaptureCommandHandler.cpp b/profiling/server/src/timelineDecoder/DirectoryCaptureCommandHandler.cpp
similarity index 98%
rename from src/profiling/DirectoryCaptureCommandHandler.cpp
rename to profiling/server/src/timelineDecoder/DirectoryCaptureCommandHandler.cpp
index 4011c9b..48dce40 100644
--- a/src/profiling/DirectoryCaptureCommandHandler.cpp
+++ b/profiling/server/src/timelineDecoder/DirectoryCaptureCommandHandler.cpp
@@ -3,9 +3,9 @@
// SPDX-License-Identifier: MIT
//
-#include "DirectoryCaptureCommandHandler.hpp"
+#include <common/include/CommonProfilingUtils.hpp>
-#include "ProfilingUtils.hpp"
+#include <server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp>
#include <atomic>
#include <iostream>
diff --git a/src/armnn/ArmNNProfilingServiceInitialiser.cpp b/src/armnn/ArmNNProfilingServiceInitialiser.cpp
index 03ca562..bbed43a 100644
--- a/src/armnn/ArmNNProfilingServiceInitialiser.cpp
+++ b/src/armnn/ArmNNProfilingServiceInitialiser.cpp
@@ -9,7 +9,7 @@
#include <armnn/profiling/ArmNNProfiling.hpp>
#include <armnn/utility/Assert.hpp>
-#include <Counter.hpp>
+#include <common/include/Counter.hpp>
namespace armnn
{
diff --git a/src/backends/backendsCommon/test/BackendProfilingTests.cpp b/src/backends/backendsCommon/test/BackendProfilingTests.cpp
index 164efb3..9b80a8f 100644
--- a/src/backends/backendsCommon/test/BackendProfilingTests.cpp
+++ b/src/backends/backendsCommon/test/BackendProfilingTests.cpp
@@ -4,7 +4,6 @@
//
#include "ArmNNProfilingServiceInitialiser.hpp"
-#include "CounterDirectory.hpp"
#include "CounterIdMap.hpp"
#include "Holder.hpp"
#include "MockBackendId.hpp"
@@ -15,24 +14,28 @@
#include "ProfilingUtils.hpp"
#include "RequestCounterDirectoryCommandHandler.hpp"
-#include <armnn/profiling/ArmNNProfiling.hpp>
-
#include <TestUtils.hpp>
-#include <armnn/utility/IgnoreUnused.hpp>
#include <armnn/BackendId.hpp>
#include <armnn/Logging.hpp>
+
+#include <armnn/profiling/ArmNNProfiling.hpp>
#include <armnn/profiling/ISendTimelinePacket.hpp>
#include <armnn/profiling/ProfilingOptions.hpp>
+
+#include <armnn/utility/IgnoreUnused.hpp>
+
#include <armnnTestUtils/MockBackend.hpp>
-#include <doctest/doctest.h>
-#include <vector>
-
-#include <cstdint>
-#include <limits>
#include <backends/BackendProfiling.hpp>
+#include <common/include/CounterDirectory.hpp>
+
+#include <doctest/doctest.h>
+
+#include <vector>
+#include <cstdint>
+#include <limits>
namespace arm
{
diff --git a/src/profiling/FileOnlyProfilingConnection.hpp b/src/profiling/FileOnlyProfilingConnection.hpp
index 48fb4d3..9d40420 100644
--- a/src/profiling/FileOnlyProfilingConnection.hpp
+++ b/src/profiling/FileOnlyProfilingConnection.hpp
@@ -8,13 +8,14 @@
#include <armnn/profiling/ILocalPacketHandler.hpp>
#include <armnn/profiling/ProfilingOptions.hpp>
-#include "DirectoryCaptureCommandHandler.hpp"
#include "IProfilingConnection.hpp"
#include "ProfilingUtils.hpp"
#include <common/include/Assert.hpp>
#include <common/include/Packet.hpp>
+#include <server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp>
+
#include <atomic>
#include <condition_variable>
#include <fstream>
diff --git a/src/profiling/IProfilingService.hpp b/src/profiling/IProfilingService.hpp
index 6486b6f..353059a 100644
--- a/src/profiling/IProfilingService.hpp
+++ b/src/profiling/IProfilingService.hpp
@@ -8,7 +8,6 @@
#include "CounterIdMap.hpp"
#include "Holder.hpp"
#include "ICounterValues.hpp"
-#include "ICounterRegistry.hpp"
#include "IInitialiseProfilingService.hpp"
#include "IProfilingServiceStatus.hpp"
#include "ISendCounterPacket.hpp"
@@ -18,9 +17,11 @@
#include <armnn/backends/profiling/IBackendProfilingContext.hpp>
#include <armnn/profiling/ProfilingOptions.hpp>
+#include <common/include/ICounterRegistry.hpp>
#include <common/include/Optional.hpp>
#include <common/include/ProfilingGuidGenerator.hpp>
+
namespace arm
{
diff --git a/src/profiling/ISendCounterPacket.hpp b/src/profiling/ISendCounterPacket.hpp
index 0e3ae6f..522dc7c 100644
--- a/src/profiling/ISendCounterPacket.hpp
+++ b/src/profiling/ISendCounterPacket.hpp
@@ -6,7 +6,7 @@
#pragma once
#include <armnn/backends/profiling/IBackendProfiling.hpp>
-#include "ICounterDirectory.hpp"
+#include <common/include/ICounterDirectory.hpp>
namespace arm
{
@@ -38,4 +38,3 @@
} // namespace pipe
} // namespace arm
-
diff --git a/src/profiling/ProfilingService.hpp b/src/profiling/ProfilingService.hpp
index 9e788fd..58bfd3a 100644
--- a/src/profiling/ProfilingService.hpp
+++ b/src/profiling/ProfilingService.hpp
@@ -9,12 +9,10 @@
#include "BufferManager.hpp"
#include "CommandHandler.hpp"
#include "ConnectionAcknowledgedCommandHandler.hpp"
-#include "CounterDirectory.hpp"
#include "CounterIdMap.hpp"
#include "DeactivateTimelineReportingCommandHandler.hpp"
-#include "ICounterRegistry.hpp"
#include "ICounterValues.hpp"
-#include <armnn/profiling/ILocalPacketHandler.hpp>
+#include "INotifyBackends.hpp"
#include "IProfilingService.hpp"
#include "IReportStructure.hpp"
#include "PeriodicCounterCapture.hpp"
@@ -27,9 +25,12 @@
#include "SendThread.hpp"
#include "SendTimelinePacket.hpp"
#include "TimelinePacketWriterFactory.hpp"
-#include "INotifyBackends.hpp"
+
#include <armnn/backends/profiling/IBackendProfilingContext.hpp>
+#include <armnn/profiling/ILocalPacketHandler.hpp>
+
+#include <common/include/CounterDirectory.hpp>
#include <list>
diff --git a/src/profiling/ProfilingUtils.cpp b/src/profiling/ProfilingUtils.cpp
index e403b1c..2963a98 100644
--- a/src/profiling/ProfilingUtils.cpp
+++ b/src/profiling/ProfilingUtils.cpp
@@ -23,71 +23,6 @@
namespace pipe
{
-namespace
-{
-
-void ThrowIfCantGenerateNextUid(uint16_t uid, uint16_t cores = 0)
-{
- // Check that it is possible to generate the next UID without causing an overflow
- switch (cores)
- {
- case 0:
- case 1:
- // Number of cores not specified or set to 1 (a value of zero indicates the device is not capable of
- // running multiple parallel workloads and will not provide multiple streams of data for each event)
- if (uid == std::numeric_limits<uint16_t>::max())
- {
- throw arm::pipe::ProfilingException("Generating the next UID for profiling would result in an overflow");
- }
- break;
- default: // cores > 1
- // Multiple cores available, as max_counter_uid has to be set to: counter_uid + cores - 1, the maximum
- // allowed value for a counter UID is consequently: uint16_t_max - cores + 1
- if (uid >= std::numeric_limits<uint16_t>::max() - cores + 1)
- {
- throw arm::pipe::ProfilingException("Generating the next UID for profiling would result in an overflow");
- }
- break;
- }
-}
-
-} // Anonymous namespace
-
-uint16_t GetNextUid(bool peekOnly)
-{
- // The UID used for profiling objects and events. The first valid UID is 1, as 0 is a reserved value
- static uint16_t uid = 1;
-
- // Check that it is possible to generate the next UID without causing an overflow (throws in case of error)
- ThrowIfCantGenerateNextUid(uid);
-
- if (peekOnly)
- {
- // Peek only
- return uid;
- }
- else
- {
- // Get the next UID
- return uid++;
- }
-}
-
-std::vector<uint16_t> GetNextCounterUids(uint16_t firstUid, uint16_t cores)
-{
- // Check that it is possible to generate the next counter UID without causing an overflow (throws in case of error)
- ThrowIfCantGenerateNextUid(firstUid, cores);
-
- // Get the next counter UIDs
- size_t counterUidsSize = cores == 0 ? 1 : cores;
- std::vector<uint16_t> counterUids(counterUidsSize, 0);
- for (size_t i = 0; i < counterUidsSize; i++)
- {
- counterUids[i] = firstUid++;
- }
- return counterUids;
-}
-
void WriteBytes(const IPacketBufferPtr& packetBuffer, unsigned int offset, const void* value, unsigned int valueSize)
{
ARM_PIPE_ASSERT(packetBuffer);
@@ -656,178 +591,6 @@
return TimelinePacketStatus::Ok;
}
-void PrintDeviceDetails(const std::pair<const unsigned short, std::unique_ptr<Device>>& devicePair)
-{
- std::string body;
-
- body.append(CentreAlignFormatting(devicePair.second->m_Name, 20));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(devicePair.first), 13));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(devicePair.second->m_Cores), 10));
- body.append("\n");
-
- std::cout << std::string(body.size(), '-') << "\n";
- std::cout<< body;
-}
-
-void PrintCounterSetDetails(const std::pair<const unsigned short, std::unique_ptr<CounterSet>>& counterSetPair)
-{
- std::string body;
-
- body.append(CentreAlignFormatting(counterSetPair.second->m_Name, 20));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counterSetPair.first), 13));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counterSetPair.second->m_Count), 10));
- body.append("\n");
-
- std::cout << std::string(body.size(), '-') << "\n";
-
- std::cout<< body;
-}
-
-void PrintCounterDetails(std::shared_ptr<Counter>& counter)
-{
- std::string body;
-
- body.append(CentreAlignFormatting(counter->m_Name, 20));
- body.append(" | ");
- body.append(CentreAlignFormatting(counter->m_Description, 50));
- body.append(" | ");
- body.append(CentreAlignFormatting(counter->m_Units, 14));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_Uid), 6));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_MaxCounterUid), 10));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_Class), 8));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_Interpolation), 14));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_Multiplier), 20));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_CounterSetUid), 16));
- body.append(" | ");
- body.append(CentreAlignFormatting(std::to_string(counter->m_DeviceUid), 14));
-
- body.append("\n");
-
- std::cout << std::string(body.size(), '-') << "\n";
-
- std::cout << body;
-}
-
-void PrintCategoryDetails(const std::unique_ptr<Category>& category,
- std::unordered_map<unsigned short, std::shared_ptr<Counter>> counterMap)
-{
- std::string categoryBody;
- std::string categoryHeader;
-
- categoryHeader.append(CentreAlignFormatting("Name", 20));
- categoryHeader.append(" | ");
- categoryHeader.append(CentreAlignFormatting("Event Count", 14));
- categoryHeader.append("\n");
-
- categoryBody.append(CentreAlignFormatting(category->m_Name, 20));
- categoryBody.append(" | ");
- categoryBody.append(CentreAlignFormatting(std::to_string(category->m_Counters.size()), 14));
-
- std::cout << "\n" << "\n";
- std::cout << CentreAlignFormatting("CATEGORY", static_cast<int>(categoryHeader.size()));
- std::cout << "\n";
- std::cout << std::string(categoryHeader.size(), '=') << "\n";
-
- std::cout << categoryHeader;
-
- std::cout << std::string(categoryBody.size(), '-') << "\n";
-
- std::cout << categoryBody;
-
- std::string counterHeader;
-
- counterHeader.append(CentreAlignFormatting("Counter Name", 20));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Description", 50));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Units", 14));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("UID", 6));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Max UID", 10));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Class", 8));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Interpolation", 14));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Multiplier", 20));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Counter set UID", 16));
- counterHeader.append(" | ");
- counterHeader.append(CentreAlignFormatting("Device UID", 14));
- counterHeader.append("\n");
-
- std::cout << "\n" << "\n";
- std::cout << CentreAlignFormatting("EVENTS IN CATEGORY: " + category->m_Name,
- static_cast<int>(counterHeader.size()));
- std::cout << "\n";
- std::cout << std::string(counterHeader.size(), '=') << "\n";
- std::cout << counterHeader;
- for (auto& it: category->m_Counters) {
- auto search = counterMap.find(it);
- if(search != counterMap.end()) {
- PrintCounterDetails(search->second);
- }
- }
-}
-
-void PrintCounterDirectory(ICounterDirectory& counterDirectory)
-{
- std::string devicesHeader;
-
- devicesHeader.append(CentreAlignFormatting("Device name", 20));
- devicesHeader.append(" | ");
- devicesHeader.append(CentreAlignFormatting("UID", 13));
- devicesHeader.append(" | ");
- devicesHeader.append(CentreAlignFormatting("Cores", 10));
- devicesHeader.append("\n");
-
- std::cout << "\n" << "\n";
- std::cout << CentreAlignFormatting("DEVICES", static_cast<int>(devicesHeader.size()));
- std::cout << "\n";
- std::cout << std::string(devicesHeader.size(), '=') << "\n";
- std::cout << devicesHeader;
- for (auto& it: counterDirectory.GetDevices()) {
- PrintDeviceDetails(it);
- }
-
- std::string counterSetHeader;
-
- counterSetHeader.append(CentreAlignFormatting("Counter set name", 20));
- counterSetHeader.append(" | ");
- counterSetHeader.append(CentreAlignFormatting("UID", 13));
- counterSetHeader.append(" | ");
- counterSetHeader.append(CentreAlignFormatting("Count", 10));
- counterSetHeader.append("\n");
-
- std::cout << "\n" << "\n";
- std::cout << CentreAlignFormatting("COUNTER SETS", static_cast<int>(counterSetHeader.size()));
- std::cout << "\n";
- std::cout << std::string(counterSetHeader.size(), '=') << "\n";
-
- std::cout << counterSetHeader;
-
- for (auto& it: counterDirectory.GetCounterSets()) {
- PrintCounterSetDetails(it);
- }
-
- auto counters = counterDirectory.GetCounters();
- for (auto& it: counterDirectory.GetCategories()) {
- PrintCategoryDetails(it, counters);
- }
- std::cout << "\n";
-}
-
uint64_t GetTimestamp()
{
#if USE_CLOCK_MONOTONIC_RAW
diff --git a/src/profiling/ProfilingUtils.hpp b/src/profiling/ProfilingUtils.hpp
index 649ebfa..593dd6b 100644
--- a/src/profiling/ProfilingUtils.hpp
+++ b/src/profiling/ProfilingUtils.hpp
@@ -5,11 +5,11 @@
#pragma once
+#include <common/include/ICounterDirectory.hpp>
#include <common/include/ProfilingException.hpp>
#include <armnn/profiling/ISendTimelinePacket.hpp>
-#include "ICounterDirectory.hpp"
#include "IPacketBuffer.hpp"
#include <common/include/Packet.hpp>
@@ -29,10 +29,6 @@
constexpr unsigned int ThreadIdSize = sizeof(int); // Is platform dependent
-uint16_t GetNextUid(bool peekOnly = false);
-
-std::vector<uint16_t> GetNextCounterUids(uint16_t firstUid, uint16_t cores);
-
void WriteBytes(const IPacketBuffer& packetBuffer, unsigned int offset, const void* value, unsigned int valueSize);
uint32_t ConstructHeader(uint32_t packetFamily, uint32_t packetId);
@@ -132,8 +128,6 @@
std::string CentreAlignFormatting(const std::string& stringToPass, const int spacingWidth);
-void PrintCounterDirectory(ICounterDirectory& counterDirectory);
-
uint64_t GetTimestamp();
arm::pipe::Packet ReceivePacket(const unsigned char* buffer, uint32_t length);
diff --git a/src/profiling/RegisterBackendCounters.hpp b/src/profiling/RegisterBackendCounters.hpp
index e3045b2..3d3b11a 100644
--- a/src/profiling/RegisterBackendCounters.hpp
+++ b/src/profiling/RegisterBackendCounters.hpp
@@ -5,11 +5,13 @@
#pragma once
-#include "armnn/backends/profiling/IBackendProfiling.hpp"
#include "CounterIdMap.hpp"
-#include "CounterDirectory.hpp"
#include "IProfilingService.hpp"
+#include "armnn/backends/profiling/IBackendProfiling.hpp"
+
+#include <common/include/CounterDirectory.hpp>
+
namespace arm
{
diff --git a/src/profiling/SendCounterPacket.hpp b/src/profiling/SendCounterPacket.hpp
index c33bdcc..047dd3c 100644
--- a/src/profiling/SendCounterPacket.hpp
+++ b/src/profiling/SendCounterPacket.hpp
@@ -6,7 +6,6 @@
#pragma once
#include "IBufferManager.hpp"
-#include "ICounterDirectory.hpp"
#include "ISendCounterPacket.hpp"
#include "ProfilingUtils.hpp"
diff --git a/src/profiling/SendThread.hpp b/src/profiling/SendThread.hpp
index 6512c8a..f68a74c 100644
--- a/src/profiling/SendThread.hpp
+++ b/src/profiling/SendThread.hpp
@@ -7,13 +7,14 @@
#include "IBufferManager.hpp"
#include "IConsumer.hpp"
-#include "ICounterDirectory.hpp"
#include "ISendCounterPacket.hpp"
#include "ISendThread.hpp"
#include "IProfilingConnection.hpp"
#include "ProfilingStateMachine.hpp"
#include "ProfilingUtils.hpp"
+#include <common/include/ICounterDirectory.hpp>
+
#include <atomic>
#include <condition_variable>
#include <mutex>
diff --git a/src/profiling/test/ProfilingMocks.hpp b/src/profiling/test/ProfilingMocks.hpp
index cfc1096..80ac1fe 100644
--- a/src/profiling/test/ProfilingMocks.hpp
+++ b/src/profiling/test/ProfilingMocks.hpp
@@ -17,6 +17,7 @@
#include <armnn/profiling/ArmNNProfiling.hpp>
#include <common/include/Assert.hpp>
+#include <common/include/CommonProfilingUtils.hpp>
#include <common/include/IgnoreUnused.hpp>
#include <common/include/NumericCast.hpp>
#include <common/include/Optional.hpp>
diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp
index 19e5f1b..22b2ae2 100644
--- a/src/profiling/test/ProfilingTests.cpp
+++ b/src/profiling/test/ProfilingTests.cpp
@@ -9,7 +9,6 @@
#include <ArmNNProfilingServiceInitialiser.hpp>
#include <CommandHandler.hpp>
#include <ConnectionAcknowledgedCommandHandler.hpp>
-#include <CounterDirectory.hpp>
#include <CounterIdMap.hpp>
#include <Holder.hpp>
#include <ICounterValues.hpp>
@@ -34,6 +33,7 @@
#include <common/include/CommandHandlerKey.hpp>
#include <common/include/CommandHandlerRegistry.hpp>
+#include <common/include/CounterDirectory.hpp>
#include <common/include/EncodeVersion.hpp>
#include <common/include/IgnoreUnused.hpp>
#include <common/include/NumericCast.hpp>
diff --git a/src/profiling/test/RequestCountersPacketHandler.cpp b/src/profiling/test/RequestCountersPacketHandler.cpp
index 0a71d3c..6a757c2 100644
--- a/src/profiling/test/RequestCountersPacketHandler.cpp
+++ b/src/profiling/test/RequestCountersPacketHandler.cpp
@@ -5,12 +5,12 @@
#include "RequestCountersPacketHandler.hpp"
-#include "DirectoryCaptureCommandHandler.hpp"
-
#include <common/include/NumericCast.hpp>
#include <common/include/PacketVersionResolver.hpp>
#include <common/include/ProfilingException.hpp>
+#include <server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp>
+
namespace arm
{
diff --git a/src/profiling/test/SendCounterPacketTests.cpp b/src/profiling/test/SendCounterPacketTests.cpp
index 4f7886a..4ba5eed 100644
--- a/src/profiling/test/SendCounterPacketTests.cpp
+++ b/src/profiling/test/SendCounterPacketTests.cpp
@@ -8,7 +8,6 @@
#include "SendCounterPacketTests.hpp"
#include <BufferManager.hpp>
-#include <CounterDirectory.hpp>
#include <ProfilingUtils.hpp>
#include <SendCounterPacket.hpp>
@@ -17,6 +16,7 @@
#include <common/include/Assert.hpp>
#include <common/include/Conversion.hpp>
#include <common/include/Constants.hpp>
+#include <common/include/CounterDirectory.hpp>
#include <common/include/EncodeVersion.hpp>
#include <common/include/NumericCast.hpp>
#include <common/include/Processes.hpp>
diff --git a/tests/profiling/gatordmock/GatordMockService.hpp b/tests/profiling/gatordmock/GatordMockService.hpp
index cc9cdd1..fa483e0 100644
--- a/tests/profiling/gatordmock/GatordMockService.hpp
+++ b/tests/profiling/gatordmock/GatordMockService.hpp
@@ -16,13 +16,11 @@
#include <server/include/basePipeServer/BasePipeServer.hpp>
+#include <server/include/timelineDecoder/DirectoryCaptureCommandHandler.hpp>
#include <server/include/timelineDecoder/TimelineDecoder.hpp>
#include <server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp>
#include <server/include/timelineDecoder/TimelineDirectoryCaptureCommandHandler.hpp>
-// src/profiling
-#include <DirectoryCaptureCommandHandler.hpp>
-
#include <atomic>
#include <string>
#include <thread>