From 032bc74ca4bc6589a33f23db31accddc5b20baaa Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Wed, 12 Feb 2020 11:02:34 +0000 Subject: IVGCVSW-4338 Implement the Activation of Counters in backends Signed-off-by: Finn Williams Change-Id: I4a2465f06e046f78242ff0a246c651638b205498 --- .../PeriodicCounterSelectionCommandHandler.hpp | 48 +++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'src/profiling/PeriodicCounterSelectionCommandHandler.hpp') diff --git a/src/profiling/PeriodicCounterSelectionCommandHandler.hpp b/src/profiling/PeriodicCounterSelectionCommandHandler.hpp index c97474759a..437d7128be 100644 --- a/src/profiling/PeriodicCounterSelectionCommandHandler.hpp +++ b/src/profiling/PeriodicCounterSelectionCommandHandler.hpp @@ -5,6 +5,7 @@ #pragma once +#include "CounterIdMap.hpp" #include "Packet.hpp" #include "CommandHandlerFunctor.hpp" #include "Holder.hpp" @@ -13,12 +14,20 @@ #include "IPeriodicCounterCapture.hpp" #include "ICounterValues.hpp" +#include "armnn/backends/profiling/IBackendProfilingContext.hpp" +#include "armnn/Logging.hpp" +#include "armnn/BackendRegistry.hpp" + +#include + + namespace armnn { namespace profiling { + class PeriodicCounterSelectionCommandHandler : public CommandHandlerFunctor { @@ -26,29 +35,66 @@ public: PeriodicCounterSelectionCommandHandler(uint32_t familyId, uint32_t packetId, uint32_t version, + const std::unordered_map>& + backendProfilingContext, + const ICounterMappings& counterIdMap, Holder& captureDataHolder, + const uint16_t maxArmnnCounterId, IPeriodicCounterCapture& periodicCounterCapture, const IReadCounterValues& readCounterValue, ISendCounterPacket& sendCounterPacket, const ProfilingStateMachine& profilingStateMachine) : CommandHandlerFunctor(familyId, packetId, version) + , m_BackendProfilingContext(backendProfilingContext) + , m_CounterIdMap(counterIdMap) , m_CaptureDataHolder(captureDataHolder) + , m_MaxArmCounterId(maxArmnnCounterId) , m_PeriodicCounterCapture(periodicCounterCapture) + , m_PrevCapturePeriod(0) , m_ReadCounterValues(readCounterValue) , m_SendCounterPacket(sendCounterPacket) , m_StateMachine(profilingStateMachine) - {} + + { + + } void operator()(const Packet& packet) override; private: + + std::unordered_map> m_BackendCounterMap; + const std::unordered_map>& m_BackendProfilingContext; + const ICounterMappings& m_CounterIdMap; Holder& m_CaptureDataHolder; + const uint16_t m_MaxArmCounterId; IPeriodicCounterCapture& m_PeriodicCounterCapture; + uint32_t m_PrevCapturePeriod; + std::set m_PrevBackendCounterIds; const IReadCounterValues& m_ReadCounterValues; ISendCounterPacket& m_SendCounterPacket; const ProfilingStateMachine& m_StateMachine; + void ActivateBackedCounters(const armnn::BackendId backendId, + const uint32_t capturePeriod, + const std::vector counterIds) + { + Optional errorMsg = + m_BackendProfilingContext.at(backendId)->ActivateCounters(capturePeriod, counterIds); + + if(errorMsg.has_value()) + { + ARMNN_LOG(warning) << "An error has occurred when activating counters of " << backendId << ": " + << errorMsg.value(); + } + } void ParseData(const Packet& packet, CaptureData& captureData); + std::set ProcessBackendCounterIds(const u_int32_t capturePeriod, + std::set newCounterIds, + std::set unusedCounterIds); + }; } // namespace profiling -- cgit v1.2.1