From 277618302d0f131eac0b6ac2015dd3eb09aa6ff9 Mon Sep 17 00:00:00 2001 From: Jim Flynn Date: Sun, 20 Mar 2022 21:52:17 +0000 Subject: IVGCVSW-6706 Move headers to profiling/client/include !android-nn-driver:7337 Change-Id: Ide401623829cc99fb9b51e9bbce3482ce706a8dd Signed-off-by: Jim Flynn --- Android.mk | 12 ++- CMakeLists.txt | 25 ++--- delegate/include/DelegateOptions.hpp | 3 +- include/armnn/IRuntime.hpp | 6 +- include/armnn/backends/IBackendInternal.hpp | 5 +- include/armnn/backends/Workload.hpp | 3 +- .../armnn/backends/profiling/IBackendProfiling.hpp | 106 --------------------- .../profiling/IBackendProfilingContext.hpp | 30 ------ include/armnn/profiling/ILocalPacketHandler.hpp | 66 ------------- include/armnn/profiling/ISendTimelinePacket.hpp | 61 ------------ include/armnn/profiling/ProfilingOptions.hpp | 45 --------- profiling/CMakeLists.txt | 1 + profiling/client/include/CounterIdMap.hpp | 51 ++++++++++ profiling/client/include/Holder.hpp | 67 +++++++++++++ profiling/client/include/ICounterValues.hpp | 47 +++++++++ .../client/include/IInitialiseProfilingService.hpp | 26 +++++ profiling/client/include/ILocalPacketHandler.hpp | 68 +++++++++++++ profiling/client/include/IProfilingService.hpp | 81 ++++++++++++++++ .../client/include/IProfilingServiceStatus.hpp | 30 ++++++ profiling/client/include/IReportStructure.hpp | 26 +++++ profiling/client/include/ISendCounterPacket.hpp | 41 ++++++++ profiling/client/include/ISendTimelinePacket.hpp | 61 ++++++++++++ profiling/client/include/ProfilingOptions.hpp | 45 +++++++++ profiling/client/include/ProfilingState.hpp | 24 +++++ .../client/include/TimelineUtilityMethods.hpp | 98 +++++++++++++++++++ .../client/include/backends/IBackendProfiling.hpp | 106 +++++++++++++++++++++ .../include/backends/IBackendProfilingContext.hpp | 30 ++++++ .../basePipeServer/tests/BasePipeServerTests.cpp | 1 - python/pyarmnn/CMakeLists.txt | 2 +- src/armnn/ArmNNProfilingServiceInitialiser.hpp | 4 +- src/armnn/BackendRegistry.cpp | 3 +- src/armnn/Layer.cpp | 7 +- src/armnn/LoadedNetwork.hpp | 9 +- src/armnn/Network.cpp | 2 +- src/armnn/Runtime.hpp | 6 +- src/armnn/test/DebugCallbackTest.cpp | 2 +- src/armnnUtils/ProfilingOptionsConverter.hpp | 3 +- src/backends/aclCommon/CMakeLists.txt | 1 + src/backends/aclCommon/test/CMakeLists.txt | 1 + src/backends/backendsCommon/CMakeLists.txt | 1 + .../backendsCommon/test/BackendProfilingTests.cpp | 9 +- src/backends/backendsCommon/test/CMakeLists.txt | 17 ++++ .../test/DefaultAsyncExecuteTest.cpp | 4 +- src/backends/cl/CMakeLists.txt | 1 + src/backends/cl/test/CMakeLists.txt | 2 +- src/backends/cl/workloads/CMakeLists.txt | 1 + src/backends/dynamic/reference/CMakeLists.txt | 1 + src/backends/neon/CMakeLists.txt | 1 + src/backends/neon/test/CMakeLists.txt | 2 +- src/backends/neon/workloads/CMakeLists.txt | 1 + src/backends/reference/CMakeLists.txt | 1 + src/backends/reference/test/CMakeLists.txt | 1 + src/backends/reference/workloads/CMakeLists.txt | 1 + src/dynamic/sample/CMakeLists.txt | 1 + .../ActivateTimelineReportingCommandHandler.cpp | 4 +- .../ActivateTimelineReportingCommandHandler.hpp | 3 +- .../ConnectionAcknowledgedCommandHandler.cpp | 3 +- .../ConnectionAcknowledgedCommandHandler.hpp | 10 +- src/profiling/CounterIdMap.cpp | 3 +- src/profiling/CounterIdMap.hpp | 51 ---------- src/profiling/FileOnlyProfilingConnection.hpp | 6 +- src/profiling/Holder.cpp | 2 +- src/profiling/Holder.hpp | 68 ------------- src/profiling/ICounterValues.hpp | 47 --------- src/profiling/IInitialiseProfilingService.hpp | 26 ----- src/profiling/IProfilingConnection.hpp | 2 +- src/profiling/IProfilingConnectionFactory.hpp | 2 +- src/profiling/IProfilingService.cpp | 3 +- src/profiling/IProfilingService.hpp | 81 ---------------- src/profiling/IProfilingServiceStatus.hpp | 30 ------ src/profiling/IReportStructure.hpp | 26 ----- src/profiling/ISendCounterPacket.hpp | 40 -------- src/profiling/PeriodicCounterCapture.hpp | 9 +- .../PeriodicCounterSelectionCommandHandler.cpp | 3 +- .../PeriodicCounterSelectionCommandHandler.hpp | 9 +- .../ProfilingConnectionDumpToFileDecorator.hpp | 2 +- src/profiling/ProfilingService.hpp | 12 +-- src/profiling/ProfilingState.hpp | 24 ----- src/profiling/ProfilingStateMachine.hpp | 6 +- src/profiling/ProfilingUtils.hpp | 9 +- src/profiling/RegisterBackendCounters.hpp | 6 +- .../RequestCounterDirectoryCommandHandler.hpp | 5 +- src/profiling/SendCounterPacket.hpp | 3 +- src/profiling/SendThread.hpp | 3 +- src/profiling/SendTimelinePacket.hpp | 3 +- src/profiling/TimelinePacketWriterFactory.hpp | 3 +- src/profiling/TimelineUtilityMethods.cpp | 4 +- src/profiling/TimelineUtilityMethods.hpp | 98 ------------------- src/profiling/backends/BackendProfiling.hpp | 3 +- src/profiling/test/PrintPacketHeaderHandler.hpp | 2 +- src/profiling/test/ProfilingMocks.hpp | 5 +- src/profiling/test/ProfilingTests.cpp | 9 +- .../test/RequestCountersPacketHandler.hpp | 5 +- src/profiling/test/TestTimelinePacketHandler.hpp | 13 +-- src/profiling/test/TimelineUtilityMethodsTests.cpp | 3 +- src/timelineDecoder/CMakeLists.txt | 1 + 96 files changed, 986 insertions(+), 910 deletions(-) delete mode 100644 include/armnn/backends/profiling/IBackendProfiling.hpp delete mode 100644 include/armnn/backends/profiling/IBackendProfilingContext.hpp delete mode 100644 include/armnn/profiling/ILocalPacketHandler.hpp delete mode 100644 include/armnn/profiling/ISendTimelinePacket.hpp delete mode 100644 include/armnn/profiling/ProfilingOptions.hpp create mode 100644 profiling/client/include/CounterIdMap.hpp create mode 100644 profiling/client/include/Holder.hpp create mode 100644 profiling/client/include/ICounterValues.hpp create mode 100644 profiling/client/include/IInitialiseProfilingService.hpp create mode 100644 profiling/client/include/ILocalPacketHandler.hpp create mode 100644 profiling/client/include/IProfilingService.hpp create mode 100644 profiling/client/include/IProfilingServiceStatus.hpp create mode 100644 profiling/client/include/IReportStructure.hpp create mode 100644 profiling/client/include/ISendCounterPacket.hpp create mode 100644 profiling/client/include/ISendTimelinePacket.hpp create mode 100644 profiling/client/include/ProfilingOptions.hpp create mode 100644 profiling/client/include/ProfilingState.hpp create mode 100644 profiling/client/include/TimelineUtilityMethods.hpp create mode 100644 profiling/client/include/backends/IBackendProfiling.hpp create mode 100644 profiling/client/include/backends/IBackendProfilingContext.hpp delete mode 100644 src/profiling/CounterIdMap.hpp delete mode 100644 src/profiling/Holder.hpp delete mode 100644 src/profiling/ICounterValues.hpp delete mode 100644 src/profiling/IInitialiseProfilingService.hpp delete mode 100644 src/profiling/IProfilingService.hpp delete mode 100644 src/profiling/IProfilingServiceStatus.hpp delete mode 100644 src/profiling/IReportStructure.hpp delete mode 100644 src/profiling/ISendCounterPacket.hpp delete mode 100644 src/profiling/ProfilingState.hpp delete mode 100644 src/profiling/TimelineUtilityMethods.hpp diff --git a/Android.mk b/Android.mk index b0436bdeb3..2d38182a22 100644 --- a/Android.mk +++ b/Android.mk @@ -10,6 +10,7 @@ OPENCL_HEADER_PATH := $(LOCAL_PATH)/../clframework/include NN_HEADER_PATH := $(LOCAL_PATH)/../../../../frameworks/ml/nn/runtime/include ARMNN_HEADER_PATH := $(LOCAL_PATH)/include ARMNN_PROFILING_INCLUDE_PATH := $(LOCAL_PATH)/profiling +ARMNN_PROFILING_CLIENT_INCLUDE_PATH := $(LOCAL_PATH)/profiling/client/include ARMNN_PROFILING_COMMON_INCLUDE_PATH := $(LOCAL_PATH)/profiling/common/include ARMNN_TIMELINE_DECODER_INCLUDE_PATH := $(LOCAL_PATH)/src/timelineDecoder ARMNN_THIRD_PARTY_INCLUDE_PATH := $(LOCAL_PATH)/third-party @@ -75,10 +76,11 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk \ $(ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS) LOCAL_EXPORT_C_INCLUDES := \ - $(ARMNN_MAIN_HEADER_PATH) \ - $(ARMNN_SOURCE_HEADER_PATH) \ $(ARMNN_PROFILING_INCLUDE_PATH) \ $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \ + $(ARMNN_PROFILING_CLIENT_INCLUDE_PATH) \ + $(ARMNN_MAIN_HEADER_PATH) \ + $(ARMNN_SOURCE_HEADER_PATH) \ $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \ $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \ $(ARMNN_SOURCE_UTILS_HEADER_PATH) \ @@ -90,9 +92,10 @@ LOCAL_EXPORT_C_INCLUDES := \ LOCAL_C_INCLUDES := \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) \ - $(ARMNN_HEADER_PATH) \ $(ARMNN_PROFILING_INCLUDE_PATH) \ $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \ + $(ARMNN_PROFILING_CLIENT_INCLUDE_PATH) \ + $(ARMNN_HEADER_PATH) \ $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \ $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \ $(ARMNN_MAIN_HEADER_PATH) \ @@ -368,9 +371,10 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) \ - $(ARMNN_HEADER_PATH) \ $(ARMNN_PROFILING_INCLUDE_PATH) \ $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \ + $(ARMNN_PROFILING_CLIENT_INCLUDE_PATH) \ + $(ARMNN_HEADER_PATH) \ $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \ $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \ $(ARMNN_MAIN_HEADER_PATH) \ diff --git a/CMakeLists.txt b/CMakeLists.txt index e2fa9f3b06..0e31c6ba0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,8 +176,8 @@ list(APPEND armnn_sources include/armnn/TypesUtils.hpp include/armnn/Utils.hpp include/armnn/Version.hpp - include/armnn/profiling/ISendTimelinePacket.hpp - include/armnn/profiling/ProfilingOptions.hpp + profiling/client/include/ISendTimelinePacket.hpp + profiling/client/include/ProfilingOptions.hpp include/armnn/utility/Assert.hpp include/armnn/utility/IgnoreUnused.hpp include/armnn/utility/NumericCast.hpp @@ -423,26 +423,26 @@ list(APPEND armnn_sources src/profiling/ConnectionAcknowledgedCommandHandler.cpp src/profiling/ConnectionAcknowledgedCommandHandler.hpp src/profiling/CounterIdMap.cpp - src/profiling/CounterIdMap.hpp + profiling/client/include/CounterIdMap.hpp src/profiling/DeactivateTimelineReportingCommandHandler.cpp src/profiling/DeactivateTimelineReportingCommandHandler.hpp src/profiling/FileOnlyProfilingConnection.cpp src/profiling/FileOnlyProfilingConnection.hpp src/profiling/Holder.cpp - src/profiling/Holder.hpp + profiling/client/include/Holder.hpp src/profiling/IBufferManager.hpp src/profiling/IConsumer.hpp - src/profiling/ICounterValues.hpp - src/profiling/IInitialiseProfilingService.hpp + profiling/client/include/ICounterValues.hpp + profiling/client/include/IInitialiseProfilingService.hpp src/profiling/INotifyBackends.hpp - src/profiling/IReportStructure.hpp - src/profiling/ISendCounterPacket.hpp + profiling/client/include/IReportStructure.hpp + profiling/client/include/ISendCounterPacket.hpp src/profiling/ISendThread.hpp src/profiling/IPacketBuffer.hpp src/profiling/IPeriodicCounterCapture.hpp src/profiling/IProfilingConnection.hpp src/profiling/IProfilingService.cpp - src/profiling/IProfilingService.hpp + profiling/client/include/IProfilingService.hpp src/profiling/IProfilingConnectionFactory.hpp src/profiling/NullProfilingConnection.hpp src/profiling/PacketBuffer.cpp @@ -459,7 +459,7 @@ list(APPEND armnn_sources src/profiling/ProfilingConnectionFactory.hpp src/profiling/ProfilingService.cpp src/profiling/ProfilingService.hpp - src/profiling/ProfilingState.hpp + profiling/client/include/ProfilingState.hpp src/profiling/ProfilingStateMachine.cpp src/profiling/ProfilingStateMachine.hpp src/profiling/ProfilingUtils.cpp @@ -479,7 +479,7 @@ list(APPEND armnn_sources src/profiling/TimelinePacketWriterFactory.cpp src/profiling/TimelinePacketWriterFactory.hpp src/profiling/TimelineUtilityMethods.cpp - src/profiling/TimelineUtilityMethods.hpp + profiling/client/include/TimelineUtilityMethods.hpp src/profiling/backends/BackendProfiling.cpp src/profiling/backends/BackendProfiling.hpp third-party/cxxopts/cxxopts.hpp @@ -521,6 +521,7 @@ target_include_directories(armnn src/armnnUtils src/backends src/profiling + profiling/client/include profiling/common/include ) @@ -962,6 +963,7 @@ if(BUILD_GATORD_MOCK) add_library_ex(gatordMockService STATIC ${gatord_mock_sources}) target_include_directories(gatordMockService PRIVATE profiling/common/include + profiling/client/include profiling/server/src/basePipeServer src/armnnUtils src/profiling @@ -975,6 +977,7 @@ if(BUILD_GATORD_MOCK) add_executable_ex(GatordMock tests/profiling/gatordmock/GatordMockMain.cpp) target_include_directories(GatordMock PRIVATE profiling/common/include + profiling/client/include profiling/server/src/basePipeServer src/armnnUtils src/profiling diff --git a/delegate/include/DelegateOptions.hpp b/delegate/include/DelegateOptions.hpp index d8c4139083..7f7eaa5bb9 100644 --- a/delegate/include/DelegateOptions.hpp +++ b/delegate/include/DelegateOptions.hpp @@ -8,7 +8,8 @@ #include #include #include -#include + +#include #include #include diff --git a/include/armnn/IRuntime.hpp b/include/armnn/IRuntime.hpp index debb2d6896..0a2dc3233e 100644 --- a/include/armnn/IRuntime.hpp +++ b/include/armnn/IRuntime.hpp @@ -12,10 +12,12 @@ #include "Tensor.hpp" #include "Types.hpp" #include "TypesUtils.hpp" -#include "profiling/ILocalPacketHandler.hpp" #include #include + +#include + #include #include @@ -31,7 +33,7 @@ class IRuntime; using IRuntimePtr = std::unique_ptr; struct INetworkProperties -{ +{ INetworkProperties(bool asyncEnabled, MemorySource inputSource, MemorySource outputSource, diff --git a/include/armnn/backends/IBackendInternal.hpp b/include/armnn/backends/IBackendInternal.hpp index 06fa5edde8..98f0eaacd7 100644 --- a/include/armnn/backends/IBackendInternal.hpp +++ b/include/armnn/backends/IBackendInternal.hpp @@ -16,8 +16,9 @@ #include #include #include -#include -#include + +#include +#include #include #include diff --git a/include/armnn/backends/Workload.hpp b/include/armnn/backends/Workload.hpp index e180577ffe..d426486f89 100644 --- a/include/armnn/backends/Workload.hpp +++ b/include/armnn/backends/Workload.hpp @@ -12,7 +12,8 @@ #include #include -#include + +#include #include diff --git a/include/armnn/backends/profiling/IBackendProfiling.hpp b/include/armnn/backends/profiling/IBackendProfiling.hpp deleted file mode 100644 index 9affab2ade..0000000000 --- a/include/armnn/backends/profiling/IBackendProfiling.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright © 2020 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#pragma once - -#include - -#include -#include - -#include -#include - -namespace arm -{ - -namespace pipe -{ - -struct CounterValue -{ - CounterValue(uint16_t id, uint32_t value) : - counterId(id), counterValue(value) {} - uint16_t counterId; - uint32_t counterValue; -}; - -struct Timestamp -{ - uint64_t timestamp; - std::vector counterValues; -}; - -struct CounterStatus -{ - CounterStatus(uint16_t backendCounterId, - uint16_t globalCounterId, - bool enabled, - uint32_t samplingRateInMicroseconds) - : m_BackendCounterId(backendCounterId), - m_GlobalCounterId(globalCounterId), - m_Enabled(enabled), - m_SamplingRateInMicroseconds(samplingRateInMicroseconds) {} - uint16_t m_BackendCounterId; - uint16_t m_GlobalCounterId; - bool m_Enabled; - uint32_t m_SamplingRateInMicroseconds; -}; - -class IRegisterBackendCounters -{ -public: - virtual void RegisterCategory(const std::string& categoryName) = 0; - - virtual uint16_t RegisterDevice(const std::string& deviceName, - uint16_t cores = 0, - const arm::pipe::Optional& parentCategoryName - = arm::pipe::EmptyOptional()) = 0; - - virtual uint16_t RegisterCounterSet(const std::string& counterSetName, - uint16_t count = 0, - const arm::pipe::Optional& parentCategoryName - = arm::pipe::EmptyOptional()) = 0; - - virtual uint16_t RegisterCounter(const uint16_t uid, - const std::string& parentCategoryName, - uint16_t counterClass, - uint16_t interpolation, - double multiplier, - const std::string& name, - const std::string& description, - const arm::pipe::Optional& units = arm::pipe::EmptyOptional(), - const arm::pipe::Optional& numberOfCores = arm::pipe::EmptyOptional(), - const arm::pipe::Optional& deviceUid = arm::pipe::EmptyOptional(), - const arm::pipe::Optional& counterSetUid = arm::pipe::EmptyOptional()) = 0; - - virtual ~IRegisterBackendCounters() {} -}; - -class IBackendProfiling -{ -public: - virtual ~IBackendProfiling() - {} - - virtual std::unique_ptr - GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) = 0; - - virtual std::unique_ptr GetSendTimelinePacket() = 0; - - virtual IProfilingGuidGenerator& GetProfilingGuidGenerator() = 0; - - virtual void ReportCounters(const std::vector& counterValues) = 0; - - virtual CounterStatus GetCounterStatus(uint16_t backendCounterId) = 0; - - virtual std::vector GetActiveCounters() = 0; - - virtual bool IsProfilingEnabled() const = 0; - -}; - -} // namespace pipe - -} // namespace arm diff --git a/include/armnn/backends/profiling/IBackendProfilingContext.hpp b/include/armnn/backends/profiling/IBackendProfilingContext.hpp deleted file mode 100644 index a1ed05e43d..0000000000 --- a/include/armnn/backends/profiling/IBackendProfilingContext.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright © 2020 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#pragma once - -#include "IBackendProfiling.hpp" -#include - -namespace arm -{ -namespace pipe -{ - -class IBackendProfilingContext -{ -public: - virtual ~IBackendProfilingContext() - {} - virtual uint16_t RegisterCounters(uint16_t currentMaxGlobalCounterID) = 0; - virtual arm::pipe::Optional ActivateCounters( - uint32_t capturePeriod, const std::vector& counterIds) = 0; - virtual std::vector ReportCounterValues() = 0; - virtual bool EnableProfiling(bool flag) = 0; - virtual bool EnableTimelineReporting(bool flag) = 0; -}; - -using IBackendProfilingContextUniquePtr = std::unique_ptr; -} // namespace pipe -} // namespace arm diff --git a/include/armnn/profiling/ILocalPacketHandler.hpp b/include/armnn/profiling/ILocalPacketHandler.hpp deleted file mode 100644 index bf7bdbc5c4..0000000000 --- a/include/armnn/profiling/ILocalPacketHandler.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// -// Copyright © 2020 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - - -#include -#include "../../../profiling/common/include/TargetEndianess.hpp" - -#include -#include -#include - -// forward declare to prevent a circular dependency -namespace arm -{ -namespace pipe -{ - -class Packet; - -// the handlers need to be able to do two -// things to service the FileOnlyProfilingConnection -// and any other implementation of IProfilingConnection -// set the endianness and write a packet back i.e. -// return a packet and close the connection -class IInternalProfilingConnection -{ -public: - virtual ~IInternalProfilingConnection() {}; - - virtual void SetEndianess(const TargetEndianness& endianness) = 0; - - virtual void ReturnPacket(Packet& packet) = 0; - - virtual void Close() = 0; -}; - -class ILocalPacketHandler -{ -public: - virtual ~ILocalPacketHandler() {}; - - /// @return lists the headers of the packets that this handler accepts - /// only these packets will get sent to this handler. - /// If this function returns an empty list then ALL packets - /// will be sent to the PacketHandler i.e. a universal handler. - virtual std::vector GetHeadersAccepted() = 0; - - /// process the packet - virtual void HandlePacket(const Packet& packet) = 0; - - /// Set a profiling connection on the handler. Only need to implement this - /// function if the handler will be writing data back to the profiled application. - virtual void SetConnection(IInternalProfilingConnection* profilingConnection) - {armnn::IgnoreUnused(profilingConnection);} -}; - -using ILocalPacketHandlerPtr = std::unique_ptr; -using ILocalPacketHandlerSharedPtr = std::shared_ptr; - -} // namespace pipe - -} // namespace arm \ No newline at end of file diff --git a/include/armnn/profiling/ISendTimelinePacket.hpp b/include/armnn/profiling/ISendTimelinePacket.hpp deleted file mode 100644 index 4785e04ef8..0000000000 --- a/include/armnn/profiling/ISendTimelinePacket.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include -#include -#include - -namespace arm -{ - -namespace pipe -{ - -enum class ProfilingRelationshipType -{ - RetentionLink, /// Head retains(parents) Tail - ExecutionLink, /// Head execution start depends on Tail execution completion - DataLink, /// Head uses data of Tail - LabelLink /// Head uses label Tail (Tail MUST be a guid of a label). -}; - -class ISendTimelinePacket -{ -public: - virtual ~ISendTimelinePacket() - {} - - /// Commits the current buffer and reset the member variables - virtual void Commit() = 0; - - /// Create and write a TimelineEntityBinaryPacket from the parameters to the buffer. - virtual void SendTimelineEntityBinaryPacket(uint64_t profilingGuid) = 0; - - /// Create and write a TimelineEventBinaryPacket from the parameters to the buffer. - virtual void - SendTimelineEventBinaryPacket(uint64_t timestamp, int threadId, uint64_t profilingGuid) = 0; - - /// Create and write a TimelineEventClassBinaryPacket from the parameters to the buffer. - virtual void SendTimelineEventClassBinaryPacket(uint64_t profilingGuid, uint64_t nameGuid) = 0; - - /// Create and write a TimelineLabelBinaryPacket from the parameters to the buffer. - virtual void SendTimelineLabelBinaryPacket(uint64_t profilingGuid, const std::string& label) = 0; - - /// Create and write a TimelineMessageDirectoryPackage in the buffer - virtual void SendTimelineMessageDirectoryPackage() = 0; - - /// Create and write a TimelineRelationshipBinaryPacket from the parameters to the buffer. - virtual void SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType relationshipType, - uint64_t relationshipGuid, - uint64_t headGuid, - uint64_t tailGuid, - uint64_t attributeGuid) = 0; -}; - -} // namespace pipe - -} // namespace arm diff --git a/include/armnn/profiling/ProfilingOptions.hpp b/include/armnn/profiling/ProfilingOptions.hpp deleted file mode 100644 index 6b4472ca63..0000000000 --- a/include/armnn/profiling/ProfilingOptions.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -#include -#include - -namespace arm -{ -namespace pipe -{ -/// The lowest performance data capture interval we support is 10 miliseconds. -constexpr unsigned int LOWEST_CAPTURE_PERIOD = 10000u; - -struct ProfilingOptions { - ProfilingOptions() - : m_EnableProfiling(false), m_TimelineEnabled(false), m_OutgoingCaptureFile(""), - m_IncomingCaptureFile(""), m_FileOnly(false), m_CapturePeriod(arm::pipe::LOWEST_CAPTURE_PERIOD), - m_FileFormat("binary"), m_LocalPacketHandlers() {} - - /// Indicates whether external profiling is enabled or not. - bool m_EnableProfiling; - /// Indicates whether external timeline profiling is enabled or not. - bool m_TimelineEnabled; - /// Path to a file in which outgoing timeline profiling messages will be stored. - std::string m_OutgoingCaptureFile; - /// Path to a file in which incoming timeline profiling messages will be stored. - std::string m_IncomingCaptureFile; - /// Enable profiling output to file only. - bool m_FileOnly; - /// The duration at which captured profiling messages will be flushed. - uint32_t m_CapturePeriod; - /// The format of the file used for outputting profiling data. - std::string m_FileFormat; - std::vector m_LocalPacketHandlers; -}; - -} // namespace pipe - -} // namespace arm diff --git a/profiling/CMakeLists.txt b/profiling/CMakeLists.txt index f9ffd66433..265c5365c7 100644 --- a/profiling/CMakeLists.txt +++ b/profiling/CMakeLists.txt @@ -22,6 +22,7 @@ add_custom_target(AdditionalCMakeFiles SOURCES ${additional_cmake_files}) include(GNUInstallDirs) include_directories(SYSTEM common/include) +include_directories(SYSTEM client/include) include_directories(SYSTEM ${PROJECT_SOURCE_DIR}) set(BUILD_UNIT_TESTS 0) diff --git a/profiling/client/include/CounterIdMap.hpp b/profiling/client/include/CounterIdMap.hpp new file mode 100644 index 0000000000..cce7184c46 --- /dev/null +++ b/profiling/client/include/CounterIdMap.hpp @@ -0,0 +1,51 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include +#include + +namespace arm +{ +namespace pipe +{ + +class ICounterMappings +{ +public: + virtual uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const = 0; + virtual const std::pair& GetBackendId(uint16_t globalCounterId) const = 0; + virtual ~ICounterMappings() {} +}; + +class IRegisterCounterMapping +{ +public: + virtual void RegisterMapping(uint16_t globalCounterId, + uint16_t backendCounterId, + const std::string& backendId) = 0; + virtual void Reset() = 0; + virtual ~IRegisterCounterMapping() {} +}; + +class CounterIdMap : public ICounterMappings, public IRegisterCounterMapping +{ + +public: + CounterIdMap() = default; + virtual ~CounterIdMap() {} + void RegisterMapping(uint16_t globalCounterId, + uint16_t backendCounterId, + const std::string& backendId) override; + void Reset() override; + uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const override; + const std::pair& GetBackendId(uint16_t globalCounterId) const override; +private: + std::map> m_GlobalCounterIdMap; + std::map, uint16_t> m_BackendCounterIdMap; +}; + +} // namespace pipe +} // namespace arm diff --git a/profiling/client/include/Holder.hpp b/profiling/client/include/Holder.hpp new file mode 100644 index 0000000000..db5468feda --- /dev/null +++ b/profiling/client/include/Holder.hpp @@ -0,0 +1,67 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include +#include +#include + +namespace arm +{ + +namespace pipe +{ + +class CaptureData +{ +public: + CaptureData() + : m_CapturePeriod(0) + , m_CounterIds() + , m_ActiveBackends(){} + CaptureData(uint32_t capturePeriod, std::vector& counterIds, std::set activeBackends) + : m_CapturePeriod(capturePeriod) + , m_CounterIds(counterIds) + , m_ActiveBackends(activeBackends){} + CaptureData(const CaptureData& captureData) + : m_CapturePeriod(captureData.m_CapturePeriod) + , m_CounterIds(captureData.m_CounterIds) + , m_ActiveBackends(captureData.m_ActiveBackends){} + + CaptureData& operator=(const CaptureData& other); + + void SetActiveBackends(const std::set& activeBackends); + void SetCapturePeriod(uint32_t capturePeriod); + void SetCounterIds(const std::vector& counterIds); + uint32_t GetCapturePeriod() const; + const std::vector& GetCounterIds() const; + const std::set& GetActiveBackends() const; + bool IsCounterIdInCaptureData(uint16_t counterId); + +private: + uint32_t m_CapturePeriod; + std::vector m_CounterIds; + std::set m_ActiveBackends; +}; + +class Holder +{ +public: + Holder() + : m_CaptureData() {} + CaptureData GetCaptureData() const; + void SetCaptureData(uint32_t capturePeriod, + const std::vector& counterIds, + const std::set& activeBackends); + +private: + mutable std::mutex m_CaptureThreadMutex; + CaptureData m_CaptureData; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/ICounterValues.hpp b/profiling/client/include/ICounterValues.hpp new file mode 100644 index 0000000000..a851c6b3f3 --- /dev/null +++ b/profiling/client/include/ICounterValues.hpp @@ -0,0 +1,47 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +namespace arm +{ + +namespace pipe +{ + +class IReadCounterValues +{ +public: + virtual ~IReadCounterValues() {} + + virtual bool IsCounterRegistered(uint16_t counterUid) const = 0; + virtual bool IsCounterRegistered(const std::string& counterName) const = 0; + virtual uint16_t GetCounterCount() const = 0; + virtual uint32_t GetAbsoluteCounterValue(uint16_t counterUid) const = 0; + virtual uint32_t GetDeltaCounterValue(uint16_t counterUid) = 0; +}; + +class IWriteCounterValues +{ +public: + virtual ~IWriteCounterValues() {} + + virtual void SetCounterValue(uint16_t counterUid, uint32_t value) = 0; + virtual uint32_t AddCounterValue(uint16_t counterUid, uint32_t value) = 0; + virtual uint32_t SubtractCounterValue(uint16_t counterUid, uint32_t value) = 0; + virtual uint32_t IncrementCounterValue(uint16_t counterUid) = 0; +}; + +class IReadWriteCounterValues : public IReadCounterValues, public IWriteCounterValues +{ +public: + virtual ~IReadWriteCounterValues() {} +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/IInitialiseProfilingService.hpp b/profiling/client/include/IInitialiseProfilingService.hpp new file mode 100644 index 0000000000..fc3f4b9a5d --- /dev/null +++ b/profiling/client/include/IInitialiseProfilingService.hpp @@ -0,0 +1,26 @@ +// +// Copyright © 2022 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace arm +{ + +namespace pipe +{ + +// forward declaration +class IProfilingService; + +class IInitialiseProfilingService +{ +public: + virtual ~IInitialiseProfilingService() {} + virtual void InitialiseProfilingService(IProfilingService& profilingService) = 0; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/ILocalPacketHandler.hpp b/profiling/client/include/ILocalPacketHandler.hpp new file mode 100644 index 0000000000..0a69f27491 --- /dev/null +++ b/profiling/client/include/ILocalPacketHandler.hpp @@ -0,0 +1,68 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + + +#include +#include + +#include +#include +#include + +// forward declare to prevent a circular dependency +namespace arm +{ +namespace pipe +{ + +class Packet; + +// the handlers need to be able to do two +// things to service the FileOnlyProfilingConnection +// and any other implementation of IProfilingConnection +// set the endianness and write a packet back i.e. +// return a packet and close the connection +class IInternalProfilingConnection +{ +public: + virtual ~IInternalProfilingConnection() {}; + + virtual void SetEndianess(const TargetEndianness& endianness) = 0; + + virtual void ReturnPacket(Packet& packet) = 0; + + virtual void Close() = 0; +}; + +class ILocalPacketHandler +{ +public: + virtual ~ILocalPacketHandler() {}; + + /// @return lists the headers of the packets that this handler accepts + /// only these packets will get sent to this handler. + /// If this function returns an empty list then ALL packets + /// will be sent to the PacketHandler i.e. a universal handler. + virtual std::vector GetHeadersAccepted() = 0; + + /// process the packet + virtual void HandlePacket(const Packet& packet) = 0; + + /// Set a profiling connection on the handler. Only need to implement this + /// function if the handler will be writing data back to the profiled application. + virtual void SetConnection(IInternalProfilingConnection* profilingConnection) + { + arm::pipe::IgnoreUnused(profilingConnection); + } +}; + +using ILocalPacketHandlerPtr = std::unique_ptr; +using ILocalPacketHandlerSharedPtr = std::shared_ptr; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/IProfilingService.hpp b/profiling/client/include/IProfilingService.hpp new file mode 100644 index 0000000000..21d5c9ce77 --- /dev/null +++ b/profiling/client/include/IProfilingService.hpp @@ -0,0 +1,81 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "CounterIdMap.hpp" +#include "Holder.hpp" +#include "ICounterValues.hpp" +#include "IInitialiseProfilingService.hpp" +#include "IProfilingServiceStatus.hpp" +#include "ISendCounterPacket.hpp" +#include "IReportStructure.hpp" +#include "ProfilingOptions.hpp" +#include "ProfilingState.hpp" + +#include + +#include +#include +#include + + +namespace arm +{ + +namespace pipe +{ + +class IProfilingService : public IProfilingGuidGenerator, + public IProfilingServiceStatus, + public IReadWriteCounterValues +{ +public: + static std::unique_ptr CreateProfilingService( + uint16_t maxGlobalCounterId, + IInitialiseProfilingService& initialiser, + const std::string& softwareInfo, + const std::string& softwareVersion, + const std::string& hardwareVersion, + arm::pipe::Optional reportStructure = arm::pipe::EmptyOptional()); + virtual ~IProfilingService() {}; + virtual std::unique_ptr GetSendTimelinePacket() const = 0; + virtual const ICounterMappings& GetCounterMappings() const = 0; + virtual ISendCounterPacket& GetSendCounterPacket() = 0; + virtual bool IsProfilingEnabled() const = 0; + virtual bool IsTimelineReportingEnabled() const = 0; + virtual CaptureData GetCaptureData() = 0; + virtual ProfilingState GetCurrentState() const = 0; + // Resets the profiling options, optionally clears the profiling service entirely + virtual void ResetExternalProfilingOptions(const ProfilingOptions& options, + bool resetProfilingService = false) = 0; + virtual ProfilingState ConfigureProfilingService(const ProfilingOptions& options, + bool resetProfilingService = false) = 0; + // Store a profiling context returned from a backend that support profiling. + virtual void AddBackendProfilingContext(const std::string& backendId, + std::shared_ptr profilingContext) = 0; + virtual ICounterRegistry& GetCounterRegistry() = 0; + virtual IRegisterCounterMapping& GetCounterMappingRegistry() = 0; + virtual bool IsCategoryRegistered(const std::string& categoryName) const = 0; + virtual void InitializeCounterValue(uint16_t counterUid) = 0; + + // IProfilingGuidGenerator functions + /// Return the next random Guid in the sequence + ProfilingDynamicGuid NextGuid() override; + /// Create a ProfilingStaticGuid based on a hash of the string + ProfilingStaticGuid GenerateStaticId(const std::string& str) override; + static ProfilingDynamicGuid GetNextGuid(); + static ProfilingStaticGuid GetStaticId(const std::string& str); + void ResetGuidGenerator(); + + virtual void Disconnect() = 0; + +private: + static ProfilingGuidGenerator m_GuidGenerator; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/IProfilingServiceStatus.hpp b/profiling/client/include/IProfilingServiceStatus.hpp new file mode 100644 index 0000000000..f979e740f0 --- /dev/null +++ b/profiling/client/include/IProfilingServiceStatus.hpp @@ -0,0 +1,30 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "ILocalPacketHandler.hpp" + +#include + +#include + +namespace arm +{ + +namespace pipe +{ + +class IProfilingServiceStatus +{ +public: + virtual void NotifyProfilingServiceActive() = 0; + virtual void WaitForProfilingServiceActivation(unsigned int timeout) = 0; + virtual ~IProfilingServiceStatus() {}; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/IReportStructure.hpp b/profiling/client/include/IReportStructure.hpp new file mode 100644 index 0000000000..8891cbd3b0 --- /dev/null +++ b/profiling/client/include/IReportStructure.hpp @@ -0,0 +1,26 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace arm +{ + +namespace pipe +{ + +class IProfilingService; + +class IReportStructure +{ +public: + virtual ~IReportStructure() {} + virtual void ReportStructure(arm::pipe::IProfilingService& profilingService) = 0; +}; + +} // namespace pipe + +} // namespace arm + diff --git a/profiling/client/include/ISendCounterPacket.hpp b/profiling/client/include/ISendCounterPacket.hpp new file mode 100644 index 0000000000..c76150fc58 --- /dev/null +++ b/profiling/client/include/ISendCounterPacket.hpp @@ -0,0 +1,41 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +#include + +namespace arm +{ + +namespace pipe +{ + +class ISendCounterPacket +{ +public: + using IndexValuePairsVector = std::vector; + + virtual ~ISendCounterPacket() {} + + /// Create and write a StreamMetaDataPacket in the buffer + virtual void SendStreamMetaDataPacket() = 0; + + /// Create and write a CounterDirectoryPacket from the parameters to the buffer. + virtual void SendCounterDirectoryPacket(const ICounterDirectory& counterDirectory) = 0; + + /// Create and write a PeriodicCounterCapturePacket from the parameters to the buffer. + virtual void SendPeriodicCounterCapturePacket(uint64_t timestamp, const IndexValuePairsVector& values) = 0; + + /// Create and write a PeriodicCounterSelectionPacket from the parameters to the buffer. + virtual void SendPeriodicCounterSelectionPacket(uint32_t capturePeriod, + const std::vector& selectedCounterIds) = 0; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/ISendTimelinePacket.hpp b/profiling/client/include/ISendTimelinePacket.hpp new file mode 100644 index 0000000000..4785e04ef8 --- /dev/null +++ b/profiling/client/include/ISendTimelinePacket.hpp @@ -0,0 +1,61 @@ +// +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include +#include +#include + +namespace arm +{ + +namespace pipe +{ + +enum class ProfilingRelationshipType +{ + RetentionLink, /// Head retains(parents) Tail + ExecutionLink, /// Head execution start depends on Tail execution completion + DataLink, /// Head uses data of Tail + LabelLink /// Head uses label Tail (Tail MUST be a guid of a label). +}; + +class ISendTimelinePacket +{ +public: + virtual ~ISendTimelinePacket() + {} + + /// Commits the current buffer and reset the member variables + virtual void Commit() = 0; + + /// Create and write a TimelineEntityBinaryPacket from the parameters to the buffer. + virtual void SendTimelineEntityBinaryPacket(uint64_t profilingGuid) = 0; + + /// Create and write a TimelineEventBinaryPacket from the parameters to the buffer. + virtual void + SendTimelineEventBinaryPacket(uint64_t timestamp, int threadId, uint64_t profilingGuid) = 0; + + /// Create and write a TimelineEventClassBinaryPacket from the parameters to the buffer. + virtual void SendTimelineEventClassBinaryPacket(uint64_t profilingGuid, uint64_t nameGuid) = 0; + + /// Create and write a TimelineLabelBinaryPacket from the parameters to the buffer. + virtual void SendTimelineLabelBinaryPacket(uint64_t profilingGuid, const std::string& label) = 0; + + /// Create and write a TimelineMessageDirectoryPackage in the buffer + virtual void SendTimelineMessageDirectoryPackage() = 0; + + /// Create and write a TimelineRelationshipBinaryPacket from the parameters to the buffer. + virtual void SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType relationshipType, + uint64_t relationshipGuid, + uint64_t headGuid, + uint64_t tailGuid, + uint64_t attributeGuid) = 0; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/ProfilingOptions.hpp b/profiling/client/include/ProfilingOptions.hpp new file mode 100644 index 0000000000..30d383d92e --- /dev/null +++ b/profiling/client/include/ProfilingOptions.hpp @@ -0,0 +1,45 @@ +// +// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "ILocalPacketHandler.hpp" + +#include +#include + +namespace arm +{ +namespace pipe +{ +/// The lowest performance data capture interval we support is 10 miliseconds. +constexpr unsigned int LOWEST_CAPTURE_PERIOD = 10000u; + +struct ProfilingOptions { + ProfilingOptions() + : m_EnableProfiling(false), m_TimelineEnabled(false), m_OutgoingCaptureFile(""), + m_IncomingCaptureFile(""), m_FileOnly(false), m_CapturePeriod(arm::pipe::LOWEST_CAPTURE_PERIOD), + m_FileFormat("binary"), m_LocalPacketHandlers() {} + + /// Indicates whether external profiling is enabled or not. + bool m_EnableProfiling; + /// Indicates whether external timeline profiling is enabled or not. + bool m_TimelineEnabled; + /// Path to a file in which outgoing timeline profiling messages will be stored. + std::string m_OutgoingCaptureFile; + /// Path to a file in which incoming timeline profiling messages will be stored. + std::string m_IncomingCaptureFile; + /// Enable profiling output to file only. + bool m_FileOnly; + /// The duration at which captured profiling messages will be flushed. + uint32_t m_CapturePeriod; + /// The format of the file used for outputting profiling data. + std::string m_FileFormat; + std::vector m_LocalPacketHandlers; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/ProfilingState.hpp b/profiling/client/include/ProfilingState.hpp new file mode 100644 index 0000000000..0fc1903118 --- /dev/null +++ b/profiling/client/include/ProfilingState.hpp @@ -0,0 +1,24 @@ +// +// Copyright © 2022 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace arm +{ + +namespace pipe +{ + +enum class ProfilingState +{ + Uninitialised, + NotConnected, + WaitingForAck, + Active +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/TimelineUtilityMethods.hpp b/profiling/client/include/TimelineUtilityMethods.hpp new file mode 100644 index 0000000000..5bb4e5ead0 --- /dev/null +++ b/profiling/client/include/TimelineUtilityMethods.hpp @@ -0,0 +1,98 @@ +// +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include +#include + +namespace arm +{ + +namespace pipe +{ + +class TimelineUtilityMethods +{ +public: + + // static factory method which will return a pointer to a timelie utility methods + // object if profiling is enabled. Otherwise will return a null unique_ptr + static std::unique_ptr GetTimelineUtils(IProfilingService& profilingService); + + TimelineUtilityMethods( + std::unique_ptr& sendTimelinePacket) + : m_SendTimelinePacket(std::move(sendTimelinePacket)) {} + + TimelineUtilityMethods(TimelineUtilityMethods&& other) + : m_SendTimelinePacket(std::move(other.m_SendTimelinePacket)) {} + + TimelineUtilityMethods(const TimelineUtilityMethods& other) = delete; + + TimelineUtilityMethods& operator=(const TimelineUtilityMethods& other) = delete; + + TimelineUtilityMethods& operator=(TimelineUtilityMethods&& other) = default; + + ~TimelineUtilityMethods() = default; + + static void SendWellKnownLabelsAndEventClasses(ISendTimelinePacket& timelinePacket); + + ProfilingDynamicGuid CreateNamedTypedEntity(const std::string& name, const std::string& type); + + void CreateNamedTypedEntity(ProfilingGuid entityGuid, const std::string& name, const std::string& type); + + void CreateNamedTypedEntity(ProfilingGuid entityGuid, const std::string& name, ProfilingStaticGuid typeGuid); + + void MarkEntityWithLabel(ProfilingGuid entityGuid, const std::string& labelName, ProfilingStaticGuid labelLinkGuid); + + ProfilingStaticGuid DeclareLabel(const std::string& labelName); + + void NameEntity(ProfilingGuid entityGuid, const std::string& name); + + void TypeEntity(ProfilingGuid entityGuid, const std::string& type); + + ProfilingDynamicGuid CreateNamedTypedChildEntity(ProfilingGuid parentEntityGuid, + const std::string& entityName, + const std::string& entityType); + + void CreateNamedTypedChildEntity(ProfilingGuid entityGuid, + ProfilingGuid parentEntityGuid, + const std::string& entityName, + const std::string& entityType); + + void CreateNamedTypedChildEntity(ProfilingGuid entityGuid, + ProfilingGuid parentEntityGuid, + const std::string& entityName, + ProfilingStaticGuid typeGuid); + + ProfilingDynamicGuid CreateRelationship(ProfilingRelationshipType relationshipType, + ProfilingGuid headGuid, + ProfilingGuid tailGuid, + ProfilingGuid relationshipCategory); + + ProfilingDynamicGuid CreateConnectionRelationship(ProfilingRelationshipType relationshipType, + ProfilingGuid headGuid, + ProfilingGuid tailGuid); + + void CreateTypedEntity(ProfilingGuid entityGuid, ProfilingStaticGuid typeGuid); + + void MarkEntityWithType(ProfilingGuid entityGuid, ProfilingStaticGuid typeNameGuid); + + ProfilingDynamicGuid RecordEvent(ProfilingGuid entityGuid, ProfilingStaticGuid eventClassGuid); + + ProfilingDynamicGuid RecordWorkloadInferenceAndStartOfLifeEvent(ProfilingGuid workloadGuid, + ProfilingGuid inferenceGuid); + + void RecordEndOfLifeEvent(ProfilingGuid entityGuid); + + void Commit() { m_SendTimelinePacket->Commit(); } + +private: + std::unique_ptr m_SendTimelinePacket; +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/backends/IBackendProfiling.hpp b/profiling/client/include/backends/IBackendProfiling.hpp new file mode 100644 index 0000000000..347d2ddf03 --- /dev/null +++ b/profiling/client/include/backends/IBackendProfiling.hpp @@ -0,0 +1,106 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include + +#include +#include + +#include +#include + +namespace arm +{ + +namespace pipe +{ + +struct CounterValue +{ + CounterValue(uint16_t id, uint32_t value) : + counterId(id), counterValue(value) {} + uint16_t counterId; + uint32_t counterValue; +}; + +struct Timestamp +{ + uint64_t timestamp; + std::vector counterValues; +}; + +struct CounterStatus +{ + CounterStatus(uint16_t backendCounterId, + uint16_t globalCounterId, + bool enabled, + uint32_t samplingRateInMicroseconds) + : m_BackendCounterId(backendCounterId), + m_GlobalCounterId(globalCounterId), + m_Enabled(enabled), + m_SamplingRateInMicroseconds(samplingRateInMicroseconds) {} + uint16_t m_BackendCounterId; + uint16_t m_GlobalCounterId; + bool m_Enabled; + uint32_t m_SamplingRateInMicroseconds; +}; + +class IRegisterBackendCounters +{ +public: + virtual void RegisterCategory(const std::string& categoryName) = 0; + + virtual uint16_t RegisterDevice(const std::string& deviceName, + uint16_t cores = 0, + const arm::pipe::Optional& parentCategoryName + = arm::pipe::EmptyOptional()) = 0; + + virtual uint16_t RegisterCounterSet(const std::string& counterSetName, + uint16_t count = 0, + const arm::pipe::Optional& parentCategoryName + = arm::pipe::EmptyOptional()) = 0; + + virtual uint16_t RegisterCounter(const uint16_t uid, + const std::string& parentCategoryName, + uint16_t counterClass, + uint16_t interpolation, + double multiplier, + const std::string& name, + const std::string& description, + const arm::pipe::Optional& units = arm::pipe::EmptyOptional(), + const arm::pipe::Optional& numberOfCores = arm::pipe::EmptyOptional(), + const arm::pipe::Optional& deviceUid = arm::pipe::EmptyOptional(), + const arm::pipe::Optional& counterSetUid = arm::pipe::EmptyOptional()) = 0; + + virtual ~IRegisterBackendCounters() {} +}; + +class IBackendProfiling +{ +public: + virtual ~IBackendProfiling() + {} + + virtual std::unique_ptr + GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) = 0; + + virtual std::unique_ptr GetSendTimelinePacket() = 0; + + virtual IProfilingGuidGenerator& GetProfilingGuidGenerator() = 0; + + virtual void ReportCounters(const std::vector& counterValues) = 0; + + virtual CounterStatus GetCounterStatus(uint16_t backendCounterId) = 0; + + virtual std::vector GetActiveCounters() = 0; + + virtual bool IsProfilingEnabled() const = 0; + +}; + +} // namespace pipe + +} // namespace arm diff --git a/profiling/client/include/backends/IBackendProfilingContext.hpp b/profiling/client/include/backends/IBackendProfilingContext.hpp new file mode 100644 index 0000000000..a1ed05e43d --- /dev/null +++ b/profiling/client/include/backends/IBackendProfilingContext.hpp @@ -0,0 +1,30 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include "IBackendProfiling.hpp" +#include + +namespace arm +{ +namespace pipe +{ + +class IBackendProfilingContext +{ +public: + virtual ~IBackendProfilingContext() + {} + virtual uint16_t RegisterCounters(uint16_t currentMaxGlobalCounterID) = 0; + virtual arm::pipe::Optional ActivateCounters( + uint32_t capturePeriod, const std::vector& counterIds) = 0; + virtual std::vector ReportCounterValues() = 0; + virtual bool EnableProfiling(bool flag) = 0; + virtual bool EnableTimelineReporting(bool flag) = 0; +}; + +using IBackendProfilingContextUniquePtr = std::unique_ptr; +} // namespace pipe +} // namespace arm diff --git a/profiling/server/src/basePipeServer/tests/BasePipeServerTests.cpp b/profiling/server/src/basePipeServer/tests/BasePipeServerTests.cpp index 516e648ce4..ebf408ef7f 100644 --- a/profiling/server/src/basePipeServer/tests/BasePipeServerTests.cpp +++ b/profiling/server/src/basePipeServer/tests/BasePipeServerTests.cpp @@ -14,7 +14,6 @@ TEST_SUITE("BasePipeServerTests") { -using namespace armnn; using namespace arm::pipe; TEST_CASE("BasePipeServerTest") diff --git a/python/pyarmnn/CMakeLists.txt b/python/pyarmnn/CMakeLists.txt index f82eac258c..e2375c468d 100644 --- a/python/pyarmnn/CMakeLists.txt +++ b/python/pyarmnn/CMakeLists.txt @@ -13,7 +13,7 @@ configure_file(${SWIG_GENERATE_IN} ${SWIG_GENERATE} COPYONLY) # local env variables passed down to the python scripts # scripts can thus be used standalone -set(ARMNN_ENV ARMNN_INCLUDE="${PROJECT_SOURCE_DIR}/include:${PROJECT_SOURCE_DIR}/profiling/common/include" +set(ARMNN_ENV ARMNN_INCLUDE="${PROJECT_SOURCE_DIR}/profiling:${PROJECT_SOURCE_DIR}/profiling/common/include:${PROJECT_SOURCE_DIR}/profiling/client/include:${PROJECT_SOURCE_DIR}/include" ARMNN_LIB=${PROJECT_BINARY_DIR} SWIG_EXECUTABLE=${SWIG_EXECUTABLE}) diff --git a/src/armnn/ArmNNProfilingServiceInitialiser.hpp b/src/armnn/ArmNNProfilingServiceInitialiser.hpp index e8a0ae0649..8c88fed35f 100644 --- a/src/armnn/ArmNNProfilingServiceInitialiser.hpp +++ b/src/armnn/ArmNNProfilingServiceInitialiser.hpp @@ -5,8 +5,8 @@ #pragma once -#include -#include +#include +#include namespace armnn { diff --git a/src/armnn/BackendRegistry.cpp b/src/armnn/BackendRegistry.cpp index 01f632fb22..9d6a89f254 100644 --- a/src/armnn/BackendRegistry.cpp +++ b/src/armnn/BackendRegistry.cpp @@ -6,7 +6,8 @@ #include #include #include -#include + +#include namespace armnn { diff --git a/src/armnn/Layer.cpp b/src/armnn/Layer.cpp index 5818eefa39..805612d1cb 100644 --- a/src/armnn/Layer.cpp +++ b/src/armnn/Layer.cpp @@ -5,11 +5,14 @@ #include "Layer.hpp" #include "Graph.hpp" -#include -#include + #include #include +#include + +#include + #include #include diff --git a/src/armnn/LoadedNetwork.hpp b/src/armnn/LoadedNetwork.hpp index 85f90c116f..829405516a 100644 --- a/src/armnn/LoadedNetwork.hpp +++ b/src/armnn/LoadedNetwork.hpp @@ -9,18 +9,19 @@ #include "Profiling.hpp" #include + #include #include -#include #include #include + #include #include +#include #include - -#include -#include +#include +#include #include diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index 58e8b503ee..339da0d1b8 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include diff --git a/src/armnn/Runtime.hpp b/src/armnn/Runtime.hpp index 9a20902291..51a8afff71 100644 --- a/src/armnn/Runtime.hpp +++ b/src/armnn/Runtime.hpp @@ -14,9 +14,9 @@ #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/src/armnn/test/DebugCallbackTest.cpp b/src/armnn/test/DebugCallbackTest.cpp index 69b9736f92..600447c53a 100644 --- a/src/armnn/test/DebugCallbackTest.cpp +++ b/src/armnn/test/DebugCallbackTest.cpp @@ -60,7 +60,7 @@ TEST_CASE("RuntimeRegisterDebugCallback") std::vector slotIndexes; auto mockCallback = [&](LayerGuid guid, unsigned int slotIndex, ITensorHandle* tensor) { - IgnoreUnused(guid); + armnn::IgnoreUnused(guid); slotIndexes.push_back(slotIndex); tensorShapes.push_back(tensor->GetShape()); callCount++; diff --git a/src/armnnUtils/ProfilingOptionsConverter.hpp b/src/armnnUtils/ProfilingOptionsConverter.hpp index 3bf1f1920d..a2a36b9bd8 100644 --- a/src/armnnUtils/ProfilingOptionsConverter.hpp +++ b/src/armnnUtils/ProfilingOptionsConverter.hpp @@ -6,7 +6,8 @@ #pragma once #include -#include + +#include namespace arm { diff --git a/src/backends/aclCommon/CMakeLists.txt b/src/backends/aclCommon/CMakeLists.txt index 1e3d827ce0..05fbe6cca9 100644 --- a/src/backends/aclCommon/CMakeLists.txt +++ b/src/backends/aclCommon/CMakeLists.txt @@ -23,3 +23,4 @@ target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armn target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/aclCommon/test/CMakeLists.txt b/src/backends/aclCommon/test/CMakeLists.txt index 7eb232a643..ee27def133 100644 --- a/src/backends/aclCommon/test/CMakeLists.txt +++ b/src/backends/aclCommon/test/CMakeLists.txt @@ -17,3 +17,4 @@ target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR} target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt index dfd35018d9..e94e657bca 100644 --- a/src/backends/backendsCommon/CMakeLists.txt +++ b/src/backends/backendsCommon/CMakeLists.txt @@ -61,3 +61,4 @@ target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/backendsCommon/test/BackendProfilingTests.cpp b/src/backends/backendsCommon/test/BackendProfilingTests.cpp index 9b80a8fa72..5227691664 100644 --- a/src/backends/backendsCommon/test/BackendProfilingTests.cpp +++ b/src/backends/backendsCommon/test/BackendProfilingTests.cpp @@ -4,8 +4,6 @@ // #include "ArmNNProfilingServiceInitialiser.hpp" -#include "CounterIdMap.hpp" -#include "Holder.hpp" #include "MockBackendId.hpp" #include "PeriodicCounterCapture.hpp" #include "PeriodicCounterSelectionCommandHandler.hpp" @@ -20,8 +18,6 @@ #include #include -#include -#include #include @@ -29,6 +25,11 @@ #include +#include +#include +#include +#include + #include #include diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index a668c51b43..8ec65b3c17 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -208,6 +208,7 @@ target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/third-party) # Dummy shared object for testing. @@ -237,6 +238,7 @@ target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR} target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(ValidTestDynamicBackend armnn) set_target_properties(ValidTestDynamicBackend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -246,6 +248,7 @@ target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend1 armnn) set_target_properties(InvalidTestDynamicBackend1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -255,6 +258,7 @@ target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend2 armnn) set_target_properties(InvalidTestDynamicBackend2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -264,6 +268,7 @@ target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend3 armnn) set_target_properties(InvalidTestDynamicBackend3 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -273,6 +278,7 @@ target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend4 armnn) set_target_properties(InvalidTestDynamicBackend4 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -282,6 +288,7 @@ target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend5 armnn) set_target_properties(InvalidTestDynamicBackend5 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -291,6 +298,7 @@ target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend6 armnn) set_target_properties(InvalidTestDynamicBackend6 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -300,6 +308,7 @@ target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_D target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(InvalidTestDynamicBackend7 armnn) set_target_properties(InvalidTestDynamicBackend7 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend) @@ -348,6 +357,7 @@ target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/ target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestValid2_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestValid2_backend armnn) set_target_properties(Arm_TestValid2_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestValid2_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath5) @@ -360,6 +370,7 @@ target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/ target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestValid3_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestValid3_backend armnn) set_target_properties(Arm_TestValid3_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestValid3_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath5) @@ -370,6 +381,7 @@ target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestInvalid8_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestInvalid8_backend armnn) set_target_properties(Arm_TestInvalid8_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestInvalid8_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath5) @@ -380,6 +392,7 @@ target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/ target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestValid4_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestValid4_backend armnn) set_target_properties(Arm_TestValid4_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestValid4_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6) @@ -390,6 +403,7 @@ target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/ target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestValid5_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestValid5_backend armnn) set_target_properties(Arm_TestValid5_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestValid5_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6) @@ -400,6 +414,7 @@ target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestInvalid9_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestInvalid9_backend armnn) set_target_properties(Arm_TestInvalid9_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestInvalid9_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath6) @@ -410,6 +425,7 @@ target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DI target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestInvalid10_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestInvalid10_backend armnn) set_target_properties(Arm_TestInvalid10_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestInvalid10_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath9) @@ -420,6 +436,7 @@ target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DI target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_TestInvalid11_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_link_libraries(Arm_TestInvalid11_backend armnn) set_target_properties(Arm_TestInvalid11_backend PROPERTIES PREFIX "") set_target_properties(Arm_TestInvalid11_backend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/backendsTestPath9) diff --git a/src/backends/backendsCommon/test/DefaultAsyncExecuteTest.cpp b/src/backends/backendsCommon/test/DefaultAsyncExecuteTest.cpp index 2e4fc1ea1f..b1ee89ac3c 100644 --- a/src/backends/backendsCommon/test/DefaultAsyncExecuteTest.cpp +++ b/src/backends/backendsCommon/test/DefaultAsyncExecuteTest.cpp @@ -10,6 +10,8 @@ #include +#include + using namespace armnn; @@ -255,4 +257,4 @@ TEST_CASE("TestDefaultAsyncExeuteWithThreads") } -} \ No newline at end of file +} diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt index 845ba70eaa..aeb90b069c 100644 --- a/src/backends/cl/CMakeLists.txt +++ b/src/backends/cl/CMakeLists.txt @@ -72,3 +72,4 @@ target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armn target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/cl/test/CMakeLists.txt b/src/backends/cl/test/CMakeLists.txt index 434cdb83d1..ec1d0a6c2f 100644 --- a/src/backends/cl/test/CMakeLists.txt +++ b/src/backends/cl/test/CMakeLists.txt @@ -43,4 +43,4 @@ target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR} target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) - +target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/cl/workloads/CMakeLists.txt b/src/backends/cl/workloads/CMakeLists.txt index 423a4a69d1..6bb8d68d07 100644 --- a/src/backends/cl/workloads/CMakeLists.txt +++ b/src/backends/cl/workloads/CMakeLists.txt @@ -137,3 +137,4 @@ target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR} target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/dynamic/reference/CMakeLists.txt b/src/backends/dynamic/reference/CMakeLists.txt index 16e22fba02..67e3495841 100644 --- a/src/backends/dynamic/reference/CMakeLists.txt +++ b/src/backends/dynamic/reference/CMakeLists.txt @@ -27,5 +27,6 @@ target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/ target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) set_target_properties(Arm_CpuRef_backend PROPERTIES PREFIX "") target_link_libraries(Arm_CpuRef_backend armnn) diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt index 4654de5cab..16164de3fb 100644 --- a/src/backends/neon/CMakeLists.txt +++ b/src/backends/neon/CMakeLists.txt @@ -44,3 +44,4 @@ target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/ar target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt index f7438ea6c9..8339abbd7d 100644 --- a/src/backends/neon/test/CMakeLists.txt +++ b/src/backends/neon/test/CMakeLists.txt @@ -58,4 +58,4 @@ target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DI target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) - +target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt index bae51b9c79..41c5f5a950 100644 --- a/src/backends/neon/workloads/CMakeLists.txt +++ b/src/backends/neon/workloads/CMakeLists.txt @@ -143,3 +143,4 @@ target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DI target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt index 3a3d7f4dc5..688a2d759d 100644 --- a/src/backends/reference/CMakeLists.txt +++ b/src/backends/reference/CMakeLists.txt @@ -41,3 +41,4 @@ target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/arm target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt index 2476c31de6..358d58ffea 100644 --- a/src/backends/reference/test/CMakeLists.txt +++ b/src/backends/reference/test/CMakeLists.txt @@ -29,4 +29,5 @@ target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/third-party/doctest) diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt index 46c2706742..c18342fb73 100644 --- a/src/backends/reference/workloads/CMakeLists.txt +++ b/src/backends/reference/workloads/CMakeLists.txt @@ -212,3 +212,4 @@ target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/backends) target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/profiling) target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/profiling/common/include) +target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) diff --git a/src/dynamic/sample/CMakeLists.txt b/src/dynamic/sample/CMakeLists.txt index a100d1b2c8..e0c666b77b 100644 --- a/src/dynamic/sample/CMakeLists.txt +++ b/src/dynamic/sample/CMakeLists.txt @@ -34,5 +34,6 @@ target_include_directories(Arm_SampleDynamic_backend PRIVATE ${PROJECT_SOURCE_DI target_include_directories(Arm_SampleDynamic_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/backends) target_include_directories(Arm_SampleDynamic_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../src/profiling) target_include_directories(Arm_SampleDynamic_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../profiling/common/include) +target_include_directories(Arm_SampleDynamic_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../profiling/client/include) target_include_directories(Arm_SampleDynamic_backend PRIVATE ${PROJECT_SOURCE_DIR}/../../../profiling) target_link_libraries(Arm_SampleDynamic_backend ${ARMNN_PATH}) diff --git a/src/profiling/ActivateTimelineReportingCommandHandler.cpp b/src/profiling/ActivateTimelineReportingCommandHandler.cpp index 58a88256ea..9589dd808b 100644 --- a/src/profiling/ActivateTimelineReportingCommandHandler.cpp +++ b/src/profiling/ActivateTimelineReportingCommandHandler.cpp @@ -4,7 +4,9 @@ // #include "ActivateTimelineReportingCommandHandler.hpp" -#include "TimelineUtilityMethods.hpp" + +#include + #include #include diff --git a/src/profiling/ActivateTimelineReportingCommandHandler.hpp b/src/profiling/ActivateTimelineReportingCommandHandler.hpp index 21e1fe6186..c9fed73594 100644 --- a/src/profiling/ActivateTimelineReportingCommandHandler.hpp +++ b/src/profiling/ActivateTimelineReportingCommandHandler.hpp @@ -7,9 +7,10 @@ #include "ProfilingStateMachine.hpp" #include "SendTimelinePacket.hpp" -#include "IReportStructure.hpp" #include "INotifyBackends.hpp" +#include + #include #include #include diff --git a/src/profiling/ConnectionAcknowledgedCommandHandler.cpp b/src/profiling/ConnectionAcknowledgedCommandHandler.cpp index 70c260b043..9f20b9cb80 100644 --- a/src/profiling/ConnectionAcknowledgedCommandHandler.cpp +++ b/src/profiling/ConnectionAcknowledgedCommandHandler.cpp @@ -4,7 +4,8 @@ // #include "ConnectionAcknowledgedCommandHandler.hpp" -#include "TimelineUtilityMethods.hpp" + +#include #include diff --git a/src/profiling/ConnectionAcknowledgedCommandHandler.hpp b/src/profiling/ConnectionAcknowledgedCommandHandler.hpp index d69e0be5c1..e409ee62f2 100644 --- a/src/profiling/ConnectionAcknowledgedCommandHandler.hpp +++ b/src/profiling/ConnectionAcknowledgedCommandHandler.hpp @@ -5,12 +5,14 @@ #pragma once -#include -#include "IProfilingServiceStatus.hpp" -#include "ISendCounterPacket.hpp" -#include "armnn/profiling/ISendTimelinePacket.hpp" #include "ProfilingStateMachine.hpp" +#include +#include +#include + +#include + #include #include diff --git a/src/profiling/CounterIdMap.cpp b/src/profiling/CounterIdMap.cpp index 80b63a36eb..cb637c3974 100644 --- a/src/profiling/CounterIdMap.cpp +++ b/src/profiling/CounterIdMap.cpp @@ -2,7 +2,8 @@ // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // -#include "CounterIdMap.hpp" + +#include #include diff --git a/src/profiling/CounterIdMap.hpp b/src/profiling/CounterIdMap.hpp deleted file mode 100644 index cce7184c46..0000000000 --- a/src/profiling/CounterIdMap.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// -// Copyright © 2020 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#pragma once - -#include -#include - -namespace arm -{ -namespace pipe -{ - -class ICounterMappings -{ -public: - virtual uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const = 0; - virtual const std::pair& GetBackendId(uint16_t globalCounterId) const = 0; - virtual ~ICounterMappings() {} -}; - -class IRegisterCounterMapping -{ -public: - virtual void RegisterMapping(uint16_t globalCounterId, - uint16_t backendCounterId, - const std::string& backendId) = 0; - virtual void Reset() = 0; - virtual ~IRegisterCounterMapping() {} -}; - -class CounterIdMap : public ICounterMappings, public IRegisterCounterMapping -{ - -public: - CounterIdMap() = default; - virtual ~CounterIdMap() {} - void RegisterMapping(uint16_t globalCounterId, - uint16_t backendCounterId, - const std::string& backendId) override; - void Reset() override; - uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const override; - const std::pair& GetBackendId(uint16_t globalCounterId) const override; -private: - std::map> m_GlobalCounterIdMap; - std::map, uint16_t> m_BackendCounterIdMap; -}; - -} // namespace pipe -} // namespace arm diff --git a/src/profiling/FileOnlyProfilingConnection.hpp b/src/profiling/FileOnlyProfilingConnection.hpp index 9d40420ec8..c7e60f564e 100644 --- a/src/profiling/FileOnlyProfilingConnection.hpp +++ b/src/profiling/FileOnlyProfilingConnection.hpp @@ -5,12 +5,12 @@ #pragma once -#include -#include - #include "IProfilingConnection.hpp" #include "ProfilingUtils.hpp" +#include +#include + #include #include diff --git a/src/profiling/Holder.cpp b/src/profiling/Holder.cpp index 6517a24900..d144e244d9 100644 --- a/src/profiling/Holder.cpp +++ b/src/profiling/Holder.cpp @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT // -#include "Holder.hpp" +#include namespace arm { diff --git a/src/profiling/Holder.hpp b/src/profiling/Holder.hpp deleted file mode 100644 index 10d393ff9b..0000000000 --- a/src/profiling/Holder.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include -#include -#include -#include "ProfilingUtils.hpp" - -namespace arm -{ - -namespace pipe -{ - -class CaptureData -{ -public: - CaptureData() - : m_CapturePeriod(0) - , m_CounterIds() - , m_ActiveBackends(){} - CaptureData(uint32_t capturePeriod, std::vector& counterIds, std::set activeBackends) - : m_CapturePeriod(capturePeriod) - , m_CounterIds(counterIds) - , m_ActiveBackends(activeBackends){} - CaptureData(const CaptureData& captureData) - : m_CapturePeriod(captureData.m_CapturePeriod) - , m_CounterIds(captureData.m_CounterIds) - , m_ActiveBackends(captureData.m_ActiveBackends){} - - CaptureData& operator=(const CaptureData& other); - - void SetActiveBackends(const std::set& activeBackends); - void SetCapturePeriod(uint32_t capturePeriod); - void SetCounterIds(const std::vector& counterIds); - uint32_t GetCapturePeriod() const; - const std::vector& GetCounterIds() const; - const std::set& GetActiveBackends() const; - bool IsCounterIdInCaptureData(uint16_t counterId); - -private: - uint32_t m_CapturePeriod; - std::vector m_CounterIds; - std::set m_ActiveBackends; -}; - -class Holder -{ -public: - Holder() - : m_CaptureData() {} - CaptureData GetCaptureData() const; - void SetCaptureData(uint32_t capturePeriod, - const std::vector& counterIds, - const std::set& activeBackends); - -private: - mutable std::mutex m_CaptureThreadMutex; - CaptureData m_CaptureData; -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/ICounterValues.hpp b/src/profiling/ICounterValues.hpp deleted file mode 100644 index a851c6b3f3..0000000000 --- a/src/profiling/ICounterValues.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -// Copyright © 2019 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -namespace arm -{ - -namespace pipe -{ - -class IReadCounterValues -{ -public: - virtual ~IReadCounterValues() {} - - virtual bool IsCounterRegistered(uint16_t counterUid) const = 0; - virtual bool IsCounterRegistered(const std::string& counterName) const = 0; - virtual uint16_t GetCounterCount() const = 0; - virtual uint32_t GetAbsoluteCounterValue(uint16_t counterUid) const = 0; - virtual uint32_t GetDeltaCounterValue(uint16_t counterUid) = 0; -}; - -class IWriteCounterValues -{ -public: - virtual ~IWriteCounterValues() {} - - virtual void SetCounterValue(uint16_t counterUid, uint32_t value) = 0; - virtual uint32_t AddCounterValue(uint16_t counterUid, uint32_t value) = 0; - virtual uint32_t SubtractCounterValue(uint16_t counterUid, uint32_t value) = 0; - virtual uint32_t IncrementCounterValue(uint16_t counterUid) = 0; -}; - -class IReadWriteCounterValues : public IReadCounterValues, public IWriteCounterValues -{ -public: - virtual ~IReadWriteCounterValues() {} -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/IInitialiseProfilingService.hpp b/src/profiling/IInitialiseProfilingService.hpp deleted file mode 100644 index fc3f4b9a5d..0000000000 --- a/src/profiling/IInitialiseProfilingService.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// Copyright © 2022 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -namespace arm -{ - -namespace pipe -{ - -// forward declaration -class IProfilingService; - -class IInitialiseProfilingService -{ -public: - virtual ~IInitialiseProfilingService() {} - virtual void InitialiseProfilingService(IProfilingService& profilingService) = 0; -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/IProfilingConnection.hpp b/src/profiling/IProfilingConnection.hpp index 988503294a..9a25854b7f 100644 --- a/src/profiling/IProfilingConnection.hpp +++ b/src/profiling/IProfilingConnection.hpp @@ -5,7 +5,7 @@ #pragma once -#include +#include #include diff --git a/src/profiling/IProfilingConnectionFactory.hpp b/src/profiling/IProfilingConnectionFactory.hpp index 1599914bac..8676077878 100644 --- a/src/profiling/IProfilingConnectionFactory.hpp +++ b/src/profiling/IProfilingConnectionFactory.hpp @@ -7,7 +7,7 @@ #include "IProfilingConnection.hpp" -#include +#include #include diff --git a/src/profiling/IProfilingService.cpp b/src/profiling/IProfilingService.cpp index b7a394c12f..d147871e47 100644 --- a/src/profiling/IProfilingService.cpp +++ b/src/profiling/IProfilingService.cpp @@ -3,9 +3,10 @@ // SPDX-License-Identifier: MIT // -#include "IProfilingService.hpp" #include "ProfilingService.hpp" +#include + namespace arm { diff --git a/src/profiling/IProfilingService.hpp b/src/profiling/IProfilingService.hpp deleted file mode 100644 index 353059aec3..0000000000 --- a/src/profiling/IProfilingService.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include "CounterIdMap.hpp" -#include "Holder.hpp" -#include "ICounterValues.hpp" -#include "IInitialiseProfilingService.hpp" -#include "IProfilingServiceStatus.hpp" -#include "ISendCounterPacket.hpp" -#include "IReportStructure.hpp" -#include "ProfilingState.hpp" - -#include -#include - -#include -#include -#include - - -namespace arm -{ - -namespace pipe -{ - -class IProfilingService : public IProfilingGuidGenerator, - public IProfilingServiceStatus, - public IReadWriteCounterValues -{ -public: - static std::unique_ptr CreateProfilingService( - uint16_t maxGlobalCounterId, - IInitialiseProfilingService& initialiser, - const std::string& softwareInfo, - const std::string& softwareVersion, - const std::string& hardwareVersion, - arm::pipe::Optional reportStructure = arm::pipe::EmptyOptional()); - virtual ~IProfilingService() {}; - virtual std::unique_ptr GetSendTimelinePacket() const = 0; - virtual const ICounterMappings& GetCounterMappings() const = 0; - virtual ISendCounterPacket& GetSendCounterPacket() = 0; - virtual bool IsProfilingEnabled() const = 0; - virtual bool IsTimelineReportingEnabled() const = 0; - virtual CaptureData GetCaptureData() = 0; - virtual ProfilingState GetCurrentState() const = 0; - // Resets the profiling options, optionally clears the profiling service entirely - virtual void ResetExternalProfilingOptions(const ProfilingOptions& options, - bool resetProfilingService = false) = 0; - virtual ProfilingState ConfigureProfilingService(const ProfilingOptions& options, - bool resetProfilingService = false) = 0; - // Store a profiling context returned from a backend that support profiling. - virtual void AddBackendProfilingContext(const std::string& backendId, - std::shared_ptr profilingContext) = 0; - virtual ICounterRegistry& GetCounterRegistry() = 0; - virtual IRegisterCounterMapping& GetCounterMappingRegistry() = 0; - virtual bool IsCategoryRegistered(const std::string& categoryName) const = 0; - virtual void InitializeCounterValue(uint16_t counterUid) = 0; - - // IProfilingGuidGenerator functions - /// Return the next random Guid in the sequence - ProfilingDynamicGuid NextGuid() override; - /// Create a ProfilingStaticGuid based on a hash of the string - ProfilingStaticGuid GenerateStaticId(const std::string& str) override; - static ProfilingDynamicGuid GetNextGuid(); - static ProfilingStaticGuid GetStaticId(const std::string& str); - void ResetGuidGenerator(); - - virtual void Disconnect() = 0; - -private: - static ProfilingGuidGenerator m_GuidGenerator; -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/IProfilingServiceStatus.hpp b/src/profiling/IProfilingServiceStatus.hpp deleted file mode 100644 index 3366bdd445..0000000000 --- a/src/profiling/IProfilingServiceStatus.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -#include - -#include - -namespace arm -{ - -namespace pipe -{ - -class IProfilingServiceStatus -{ -public: - virtual void NotifyProfilingServiceActive() = 0; - virtual void WaitForProfilingServiceActivation(unsigned int timeout) = 0; - virtual ~IProfilingServiceStatus() {}; -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/IReportStructure.hpp b/src/profiling/IReportStructure.hpp deleted file mode 100644 index 8891cbd3b0..0000000000 --- a/src/profiling/IReportStructure.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// Copyright © 2020 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -namespace arm -{ - -namespace pipe -{ - -class IProfilingService; - -class IReportStructure -{ -public: - virtual ~IReportStructure() {} - virtual void ReportStructure(arm::pipe::IProfilingService& profilingService) = 0; -}; - -} // namespace pipe - -} // namespace arm - diff --git a/src/profiling/ISendCounterPacket.hpp b/src/profiling/ISendCounterPacket.hpp deleted file mode 100644 index 522dc7c7cb..0000000000 --- a/src/profiling/ISendCounterPacket.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include -#include - -namespace arm -{ - -namespace pipe -{ - -class ISendCounterPacket -{ -public: - using IndexValuePairsVector = std::vector; - - virtual ~ISendCounterPacket() {} - - /// Create and write a StreamMetaDataPacket in the buffer - virtual void SendStreamMetaDataPacket() = 0; - - /// Create and write a CounterDirectoryPacket from the parameters to the buffer. - virtual void SendCounterDirectoryPacket(const ICounterDirectory& counterDirectory) = 0; - - /// Create and write a PeriodicCounterCapturePacket from the parameters to the buffer. - virtual void SendPeriodicCounterCapturePacket(uint64_t timestamp, const IndexValuePairsVector& values) = 0; - - /// Create and write a PeriodicCounterSelectionPacket from the parameters to the buffer. - virtual void SendPeriodicCounterSelectionPacket(uint32_t capturePeriod, - const std::vector& selectedCounterIds) = 0; -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/PeriodicCounterCapture.hpp b/src/profiling/PeriodicCounterCapture.hpp index 9a678a85ab..88084172ca 100644 --- a/src/profiling/PeriodicCounterCapture.hpp +++ b/src/profiling/PeriodicCounterCapture.hpp @@ -6,12 +6,13 @@ #pragma once #include "IPeriodicCounterCapture.hpp" -#include "Holder.hpp" #include "SendCounterPacket.hpp" -#include "ICounterValues.hpp" -#include "CounterIdMap.hpp" -#include +#include +#include +#include + +#include #include diff --git a/src/profiling/PeriodicCounterSelectionCommandHandler.cpp b/src/profiling/PeriodicCounterSelectionCommandHandler.cpp index d405e296fc..06f2c6588b 100644 --- a/src/profiling/PeriodicCounterSelectionCommandHandler.cpp +++ b/src/profiling/PeriodicCounterSelectionCommandHandler.cpp @@ -6,7 +6,8 @@ #include "PeriodicCounterSelectionCommandHandler.hpp" #include "ProfilingUtils.hpp" -#include +#include + #include #include diff --git a/src/profiling/PeriodicCounterSelectionCommandHandler.hpp b/src/profiling/PeriodicCounterSelectionCommandHandler.hpp index e0feddf9a5..6e544c9097 100644 --- a/src/profiling/PeriodicCounterSelectionCommandHandler.hpp +++ b/src/profiling/PeriodicCounterSelectionCommandHandler.hpp @@ -5,14 +5,15 @@ #pragma once -#include "CounterIdMap.hpp" -#include "Holder.hpp" #include "ProfilingStateMachine.hpp" #include "SendCounterPacket.hpp" #include "IPeriodicCounterCapture.hpp" -#include "ICounterValues.hpp" -#include "armnn/backends/profiling/IBackendProfilingContext.hpp" +#include +#include +#include + +#include #include #include diff --git a/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp b/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp index 5807947463..8f4812e9dd 100644 --- a/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp +++ b/src/profiling/ProfilingConnectionDumpToFileDecorator.hpp @@ -8,7 +8,7 @@ #include "IProfilingConnection.hpp" #include "ProfilingUtils.hpp" -#include +#include #include #include diff --git a/src/profiling/ProfilingService.hpp b/src/profiling/ProfilingService.hpp index 58bfd3afcf..b84b39d0df 100644 --- a/src/profiling/ProfilingService.hpp +++ b/src/profiling/ProfilingService.hpp @@ -9,12 +9,8 @@ #include "BufferManager.hpp" #include "CommandHandler.hpp" #include "ConnectionAcknowledgedCommandHandler.hpp" -#include "CounterIdMap.hpp" #include "DeactivateTimelineReportingCommandHandler.hpp" -#include "ICounterValues.hpp" #include "INotifyBackends.hpp" -#include "IProfilingService.hpp" -#include "IReportStructure.hpp" #include "PeriodicCounterCapture.hpp" #include "PeriodicCounterSelectionCommandHandler.hpp" #include "PerJobCounterSelectionCommandHandler.hpp" @@ -26,9 +22,13 @@ #include "SendTimelinePacket.hpp" #include "TimelinePacketWriterFactory.hpp" -#include +#include +#include +#include +#include +#include -#include +#include #include diff --git a/src/profiling/ProfilingState.hpp b/src/profiling/ProfilingState.hpp deleted file mode 100644 index 0fc1903118..0000000000 --- a/src/profiling/ProfilingState.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright © 2022 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -namespace arm -{ - -namespace pipe -{ - -enum class ProfilingState -{ - Uninitialised, - NotConnected, - WaitingForAck, - Active -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/ProfilingStateMachine.hpp b/src/profiling/ProfilingStateMachine.hpp index 1f6e358411..b507f1a50b 100644 --- a/src/profiling/ProfilingStateMachine.hpp +++ b/src/profiling/ProfilingStateMachine.hpp @@ -5,12 +5,12 @@ #pragma once -#include "ProfilingState.hpp" - -#include +#include #include +#include + namespace arm { diff --git a/src/profiling/ProfilingUtils.hpp b/src/profiling/ProfilingUtils.hpp index 593dd6b924..cd5167c094 100644 --- a/src/profiling/ProfilingUtils.hpp +++ b/src/profiling/ProfilingUtils.hpp @@ -5,14 +5,13 @@ #pragma once -#include -#include - -#include - #include "IPacketBuffer.hpp" +#include + +#include #include +#include #include #include diff --git a/src/profiling/RegisterBackendCounters.hpp b/src/profiling/RegisterBackendCounters.hpp index 3d3b11a626..f48f1ca8f0 100644 --- a/src/profiling/RegisterBackendCounters.hpp +++ b/src/profiling/RegisterBackendCounters.hpp @@ -5,10 +5,10 @@ #pragma once -#include "CounterIdMap.hpp" -#include "IProfilingService.hpp" +#include +#include -#include "armnn/backends/profiling/IBackendProfiling.hpp" +#include #include diff --git a/src/profiling/RequestCounterDirectoryCommandHandler.hpp b/src/profiling/RequestCounterDirectoryCommandHandler.hpp index ee2874dfda..2582fb2e0a 100644 --- a/src/profiling/RequestCounterDirectoryCommandHandler.hpp +++ b/src/profiling/RequestCounterDirectoryCommandHandler.hpp @@ -5,10 +5,11 @@ #pragma once -#include "ISendCounterPacket.hpp" -#include "armnn/profiling/ISendTimelinePacket.hpp" #include "ProfilingStateMachine.hpp" +#include +#include + #include #include diff --git a/src/profiling/SendCounterPacket.hpp b/src/profiling/SendCounterPacket.hpp index 047dd3c7c9..ace7ed1485 100644 --- a/src/profiling/SendCounterPacket.hpp +++ b/src/profiling/SendCounterPacket.hpp @@ -6,9 +6,10 @@ #pragma once #include "IBufferManager.hpp" -#include "ISendCounterPacket.hpp" #include "ProfilingUtils.hpp" +#include + #include namespace arm diff --git a/src/profiling/SendThread.hpp b/src/profiling/SendThread.hpp index f68a74c1d3..b96a6d54f3 100644 --- a/src/profiling/SendThread.hpp +++ b/src/profiling/SendThread.hpp @@ -7,12 +7,13 @@ #include "IBufferManager.hpp" #include "IConsumer.hpp" -#include "ISendCounterPacket.hpp" #include "ISendThread.hpp" #include "IProfilingConnection.hpp" #include "ProfilingStateMachine.hpp" #include "ProfilingUtils.hpp" +#include + #include #include diff --git a/src/profiling/SendTimelinePacket.hpp b/src/profiling/SendTimelinePacket.hpp index ca3022fc4f..f20671fe35 100644 --- a/src/profiling/SendTimelinePacket.hpp +++ b/src/profiling/SendTimelinePacket.hpp @@ -6,9 +6,10 @@ #pragma once #include "IBufferManager.hpp" -#include "armnn/profiling/ISendTimelinePacket.hpp" #include "ProfilingUtils.hpp" +#include + #include #include diff --git a/src/profiling/TimelinePacketWriterFactory.hpp b/src/profiling/TimelinePacketWriterFactory.hpp index 00550ee381..607770f723 100644 --- a/src/profiling/TimelinePacketWriterFactory.hpp +++ b/src/profiling/TimelinePacketWriterFactory.hpp @@ -6,7 +6,8 @@ #pragma once #include "IBufferManager.hpp" -#include "armnn/profiling/ISendTimelinePacket.hpp" + +#include #include diff --git a/src/profiling/TimelineUtilityMethods.cpp b/src/profiling/TimelineUtilityMethods.cpp index 9c7780e719..27c13caef2 100644 --- a/src/profiling/TimelineUtilityMethods.cpp +++ b/src/profiling/TimelineUtilityMethods.cpp @@ -2,7 +2,9 @@ // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // -#include "TimelineUtilityMethods.hpp" +#include "ProfilingUtils.hpp" + +#include #include #include diff --git a/src/profiling/TimelineUtilityMethods.hpp b/src/profiling/TimelineUtilityMethods.hpp deleted file mode 100644 index cfdc26a72b..0000000000 --- a/src/profiling/TimelineUtilityMethods.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// -// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include "IProfilingService.hpp" -#include "armnn/profiling/ISendTimelinePacket.hpp" - -namespace arm -{ - -namespace pipe -{ - -class TimelineUtilityMethods -{ -public: - - // static factory method which will return a pointer to a timelie utility methods - // object if profiling is enabled. Otherwise will return a null unique_ptr - static std::unique_ptr GetTimelineUtils(IProfilingService& profilingService); - - TimelineUtilityMethods( - std::unique_ptr& sendTimelinePacket) - : m_SendTimelinePacket(std::move(sendTimelinePacket)) {} - - TimelineUtilityMethods(TimelineUtilityMethods&& other) - : m_SendTimelinePacket(std::move(other.m_SendTimelinePacket)) {} - - TimelineUtilityMethods(const TimelineUtilityMethods& other) = delete; - - TimelineUtilityMethods& operator=(const TimelineUtilityMethods& other) = delete; - - TimelineUtilityMethods& operator=(TimelineUtilityMethods&& other) = default; - - ~TimelineUtilityMethods() = default; - - static void SendWellKnownLabelsAndEventClasses(ISendTimelinePacket& timelinePacket); - - ProfilingDynamicGuid CreateNamedTypedEntity(const std::string& name, const std::string& type); - - void CreateNamedTypedEntity(ProfilingGuid entityGuid, const std::string& name, const std::string& type); - - void CreateNamedTypedEntity(ProfilingGuid entityGuid, const std::string& name, ProfilingStaticGuid typeGuid); - - void MarkEntityWithLabel(ProfilingGuid entityGuid, const std::string& labelName, ProfilingStaticGuid labelLinkGuid); - - ProfilingStaticGuid DeclareLabel(const std::string& labelName); - - void NameEntity(ProfilingGuid entityGuid, const std::string& name); - - void TypeEntity(ProfilingGuid entityGuid, const std::string& type); - - ProfilingDynamicGuid CreateNamedTypedChildEntity(ProfilingGuid parentEntityGuid, - const std::string& entityName, - const std::string& entityType); - - void CreateNamedTypedChildEntity(ProfilingGuid entityGuid, - ProfilingGuid parentEntityGuid, - const std::string& entityName, - const std::string& entityType); - - void CreateNamedTypedChildEntity(ProfilingGuid entityGuid, - ProfilingGuid parentEntityGuid, - const std::string& entityName, - ProfilingStaticGuid typeGuid); - - ProfilingDynamicGuid CreateRelationship(ProfilingRelationshipType relationshipType, - ProfilingGuid headGuid, - ProfilingGuid tailGuid, - ProfilingGuid relationshipCategory); - - ProfilingDynamicGuid CreateConnectionRelationship(ProfilingRelationshipType relationshipType, - ProfilingGuid headGuid, - ProfilingGuid tailGuid); - - void CreateTypedEntity(ProfilingGuid entityGuid, ProfilingStaticGuid typeGuid); - - void MarkEntityWithType(ProfilingGuid entityGuid, ProfilingStaticGuid typeNameGuid); - - ProfilingDynamicGuid RecordEvent(ProfilingGuid entityGuid, ProfilingStaticGuid eventClassGuid); - - ProfilingDynamicGuid RecordWorkloadInferenceAndStartOfLifeEvent(ProfilingGuid workloadGuid, - ProfilingGuid inferenceGuid); - - void RecordEndOfLifeEvent(ProfilingGuid entityGuid); - - void Commit() { m_SendTimelinePacket->Commit(); } - -private: - std::unique_ptr m_SendTimelinePacket; -}; - -} // namespace pipe - -} // namespace arm diff --git a/src/profiling/backends/BackendProfiling.hpp b/src/profiling/backends/BackendProfiling.hpp index bedda5d763..8ca88d2012 100644 --- a/src/profiling/backends/BackendProfiling.hpp +++ b/src/profiling/backends/BackendProfiling.hpp @@ -6,7 +6,8 @@ #pragma once #include "ProfilingService.hpp" -#include + +#include namespace arm { diff --git a/src/profiling/test/PrintPacketHeaderHandler.hpp b/src/profiling/test/PrintPacketHeaderHandler.hpp index a05e733c07..c5f426c761 100644 --- a/src/profiling/test/PrintPacketHeaderHandler.hpp +++ b/src/profiling/test/PrintPacketHeaderHandler.hpp @@ -5,7 +5,7 @@ #pragma once -#include +#include #include diff --git a/src/profiling/test/ProfilingMocks.hpp b/src/profiling/test/ProfilingMocks.hpp index 80ac1fed0e..6576a98521 100644 --- a/src/profiling/test/ProfilingMocks.hpp +++ b/src/profiling/test/ProfilingMocks.hpp @@ -5,9 +5,7 @@ #pragma once -#include #include -#include #include #include #include @@ -16,6 +14,9 @@ #include #include +#include +#include + #include #include #include diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp index 22b2ae233a..6e1a5276ca 100644 --- a/src/profiling/test/ProfilingTests.cpp +++ b/src/profiling/test/ProfilingTests.cpp @@ -9,9 +9,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -27,10 +24,14 @@ #include #include -#include #include +#include +#include +#include +#include + #include #include #include diff --git a/src/profiling/test/RequestCountersPacketHandler.hpp b/src/profiling/test/RequestCountersPacketHandler.hpp index 7068a4f253..08aeb26053 100644 --- a/src/profiling/test/RequestCountersPacketHandler.hpp +++ b/src/profiling/test/RequestCountersPacketHandler.hpp @@ -5,10 +5,11 @@ #pragma once -#include -#include #include "ProfilingUtils.hpp" +#include +#include + #include namespace arm diff --git a/src/profiling/test/TestTimelinePacketHandler.hpp b/src/profiling/test/TestTimelinePacketHandler.hpp index 7166707e80..76d42f096f 100644 --- a/src/profiling/test/TestTimelinePacketHandler.hpp +++ b/src/profiling/test/TestTimelinePacketHandler.hpp @@ -5,16 +5,17 @@ #pragma once -#include -#include - #include "ProfilingUtils.hpp" -#include -#include #include "TimelineModel.hpp" +#include + #include +#include +#include +#include + #include #include #include @@ -89,4 +90,4 @@ private: } // namespace pipe -} // namespace arm \ No newline at end of file +} // namespace arm diff --git a/src/profiling/test/TimelineUtilityMethodsTests.cpp b/src/profiling/test/TimelineUtilityMethodsTests.cpp index 66cb0e92e8..c4aa0575d6 100644 --- a/src/profiling/test/TimelineUtilityMethodsTests.cpp +++ b/src/profiling/test/TimelineUtilityMethodsTests.cpp @@ -8,11 +8,12 @@ #include #include -#include #include #include +#include + #include #include diff --git a/src/timelineDecoder/CMakeLists.txt b/src/timelineDecoder/CMakeLists.txt index af5addadfe..3aabf5be76 100644 --- a/src/timelineDecoder/CMakeLists.txt +++ b/src/timelineDecoder/CMakeLists.txt @@ -11,6 +11,7 @@ if(BUILD_TIMELINE_DECODER) include_directories(${PROJECT_SOURCE_DIR}/src/profiling ${PROJECT_SOURCE_DIR}/profiling/common/include + ${PROJECT_SOURCE_DIR}/profiling/client/include ${PROJECT_SOURCE_DIR}/profiling/server/include/timelineDecoder ${PROJECT_SOURCE_DIR}/src/armnnUtils) -- cgit v1.2.1