aboutsummaryrefslogtreecommitdiff
path: root/src/profiling
diff options
context:
space:
mode:
authorDavid Monahan <david.monahan@arm.com>2020-02-12 15:52:35 +0000
committerDavid Monahan <david.monahan@arm.com>2020-02-13 14:58:57 +0000
commitc1536d69c1468514425e143b0578656f51598b94 (patch)
tree36f2add33c611be04f2c9840ea43bc302fdf6cfe /src/profiling
parentabfa902188c3fcd72cf435a8a457807f3c7b6508 (diff)
downloadarmnn-c1536d69c1468514425e143b0578656f51598b94.tar.gz
IVGCVSW-4400 Backend Counter Registry Functionality
* Adding BackendProfilingContext to the MockBackend * Made IBackendProfilingContext pure Virtual * Added UnitTest using MockBackend for testing Backend Counter Registration * Moved Registry of backend counters from Initialize() to AddBackendProfilingContext() * Added m_MaxGlobalCounterId to ProfilingService * Removed automatic registration of MockBack in BackendRegistry() Signed-off-by: David Monahan <david.monahan@arm.com> Change-Id: Ie1c6c31e56d1ac7079d6116ecad041961014aedc
Diffstat (limited to 'src/profiling')
-rw-r--r--src/profiling/ProfilingService.cpp17
-rw-r--r--src/profiling/ProfilingService.hpp7
-rw-r--r--src/profiling/test/ProfilingTestUtils.cpp2
3 files changed, 15 insertions, 11 deletions
diff --git a/src/profiling/ProfilingService.cpp b/src/profiling/ProfilingService.cpp
index c73f3b29ec..27b05a60cf 100644
--- a/src/profiling/ProfilingService.cpp
+++ b/src/profiling/ProfilingService.cpp
@@ -181,6 +181,15 @@ void ProfilingService::Disconnect()
}
}
+// Store a profiling context returned from a backend that support profiling, and register its counters
+void ProfilingService::AddBackendProfilingContext(const BackendId backendId,
+ std::shared_ptr<armnn::profiling::IBackendProfilingContext> profilingContext)
+{
+ BOOST_ASSERT(profilingContext != nullptr);
+ // Register the backend counters
+ m_MaxGlobalCounterId = profilingContext->RegisterCounters(m_MaxGlobalCounterId);
+ m_BackendProfilingContexts.emplace(backendId, std::move(profilingContext));
+}
const ICounterDirectory& ProfilingService::GetCounterDirectory() const
{
return m_CounterDirectory;
@@ -369,13 +378,6 @@ void ProfilingService::Initialize()
BOOST_ASSERT(inferencesRunCounter);
InitializeCounterValue(inferencesRunCounter->m_Uid);
}
- // Register the backend counters
- uint16_t maxGlobalCounterId = armnn::profiling::INFERENCES_RUN;
- for (auto&& profilingContext : m_BackendProfilingContexts)
- {
- BOOST_ASSERT(profilingContext.second != nullptr);
- maxGlobalCounterId = profilingContext.second->RegisterCounters(maxGlobalCounterId);
- }
}
void ProfilingService::InitializeCounterValue(uint16_t counterUid)
@@ -409,6 +411,7 @@ void ProfilingService::Reset()
// ...finally reset the profiling state machine
m_StateMachine.Reset();
m_BackendProfilingContexts.clear();
+ m_MaxGlobalCounterId = armnn::profiling::INFERENCES_RUN;
}
void ProfilingService::Stop()
diff --git a/src/profiling/ProfilingService.hpp b/src/profiling/ProfilingService.hpp
index 27166b362e..54c6540f7e 100644
--- a/src/profiling/ProfilingService.hpp
+++ b/src/profiling/ProfilingService.hpp
@@ -67,10 +67,7 @@ public:
// Store a profiling context returned from a backend that support profiling.
void AddBackendProfilingContext(const BackendId backendId,
- std::shared_ptr<armnn::profiling::IBackendProfilingContext> profilingContext)
- {
- m_BackendProfilingContexts.emplace(backendId, std::move(profilingContext));
- }
+ std::shared_ptr<armnn::profiling::IBackendProfilingContext> profilingContext);
const ICounterDirectory& GetCounterDirectory() const;
ICounterRegistry& GetCounterRegistry();
@@ -147,6 +144,7 @@ private:
TimelinePacketWriterFactory m_TimelinePacketWriterFactory;
std::unordered_map<BackendId,
std::shared_ptr<armnn::profiling::IBackendProfilingContext>> m_BackendProfilingContexts;
+ uint16_t m_MaxGlobalCounterId;
protected:
// Default constructor/destructor kept protected for testing
@@ -196,6 +194,7 @@ protected:
m_PacketVersionResolver.ResolvePacketVersion(0, 5).GetEncodedValue(),
m_StateMachine)
, m_TimelinePacketWriterFactory(m_BufferManager)
+ , m_MaxGlobalCounterId(armnn::profiling::INFERENCES_RUN)
{
// Register the "Connection Acknowledged" command handler
m_CommandHandlerRegistry.RegisterFunctor(&m_ConnectionAcknowledgedCommandHandler);
diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp
index bc8b7a7b4d..dd54ca9ebc 100644
--- a/src/profiling/test/ProfilingTestUtils.cpp
+++ b/src/profiling/test/ProfilingTestUtils.cpp
@@ -359,6 +359,8 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId)
// Create runtime in which test will run
armnn::IRuntime::CreationOptions options;
options.m_ProfilingOptions.m_EnableProfiling = true;
+ armnn::profiling::ProfilingService& profilingService = armnn::profiling::ProfilingService::Instance();
+ profilingService.ConfigureProfilingService(options.m_ProfilingOptions, true);
armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
// build up the structure of the network