aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/ArmNNProfilingServiceInitialiser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnn/ArmNNProfilingServiceInitialiser.cpp')
-rw-r--r--src/armnn/ArmNNProfilingServiceInitialiser.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/armnn/ArmNNProfilingServiceInitialiser.cpp b/src/armnn/ArmNNProfilingServiceInitialiser.cpp
new file mode 100644
index 0000000000..d23cce5634
--- /dev/null
+++ b/src/armnn/ArmNNProfilingServiceInitialiser.cpp
@@ -0,0 +1,121 @@
+//
+// Copyright © 2022 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "ArmNNProfilingServiceInitialiser.hpp"
+
+#include <armnn/BackendRegistry.hpp>
+#include <armnn/profiling/ArmNNProfiling.hpp>
+#include <Counter.hpp>
+
+namespace armnn
+{
+
+void ArmNNProfilingServiceInitialiser::InitialiseProfilingService(arm::pipe::IProfilingService& profilingService)
+{
+ uint16_t ZERO = 0;
+ double ONE = 1.0;
+ std::string ArmNN_Runtime("ArmNN_Runtime");
+ // Register a category for the basic runtime counters
+ if (!profilingService.IsCategoryRegistered(ArmNN_Runtime))
+ {
+ profilingService.GetCounterRegistry().RegisterCategory(ArmNN_Runtime);
+ }
+
+ std::string networks("networks");
+ std::string networkLoads("Network loads");
+ // Register a counter for the number of Network loads
+ if (!profilingService.IsCounterRegistered(networkLoads))
+ {
+ const arm::pipe::Counter* loadedNetworksCounter =
+ profilingService.GetCounterRegistry().RegisterCounter(armnn::profiling::BACKEND_ID.Get(),
+ arm::pipe::NETWORK_LOADS,
+ ArmNN_Runtime,
+ ZERO,
+ ZERO,
+ ONE,
+ networkLoads,
+ "The number of networks loaded at runtime",
+ networks);
+ ARMNN_ASSERT(loadedNetworksCounter);
+ profilingService.InitializeCounterValue(loadedNetworksCounter->m_Uid);
+ }
+ // Register a counter for the number of unloaded networks
+ std::string networkUnloads("Network unloads");
+ if (!profilingService.IsCounterRegistered(networkUnloads))
+ {
+ const arm::pipe::Counter* unloadedNetworksCounter =
+ profilingService.GetCounterRegistry().RegisterCounter(armnn::profiling::BACKEND_ID.Get(),
+ arm::pipe::NETWORK_UNLOADS,
+ ArmNN_Runtime,
+ ZERO,
+ ZERO,
+ ONE,
+ networkUnloads,
+ "The number of networks unloaded at runtime",
+ networks);
+ ARMNN_ASSERT(unloadedNetworksCounter);
+ profilingService.InitializeCounterValue(unloadedNetworksCounter->m_Uid);
+ }
+ std::string backends("backends");
+ // Register a counter for the number of registered backends
+ std::string backendsRegistered("Backends registered");
+ if (!profilingService.IsCounterRegistered(backendsRegistered))
+ {
+ const arm::pipe::Counter* registeredBackendsCounter =
+ profilingService.GetCounterRegistry().RegisterCounter(armnn::profiling::BACKEND_ID.Get(),
+ arm::pipe::REGISTERED_BACKENDS,
+ ArmNN_Runtime,
+ ZERO,
+ ZERO,
+ ONE,
+ backendsRegistered,
+ "The number of registered backends",
+ backends);
+ ARMNN_ASSERT(registeredBackendsCounter);
+ profilingService.InitializeCounterValue(registeredBackendsCounter->m_Uid);
+
+ // Due to backends being registered before the profiling service becomes active,
+ // we need to set the counter to the correct value here
+ profilingService.SetCounterValue(arm::pipe::REGISTERED_BACKENDS, static_cast<uint32_t>(
+ armnn::BackendRegistryInstance().Size()));
+ }
+ // Register a counter for the number of registered backends
+ std::string backendsUnregistered("Backends unregistered");
+ if (!profilingService.IsCounterRegistered(backendsUnregistered))
+ {
+ const arm::pipe::Counter* unregisteredBackendsCounter =
+ profilingService.GetCounterRegistry().RegisterCounter(armnn::profiling::BACKEND_ID.Get(),
+ arm::pipe::UNREGISTERED_BACKENDS,
+ ArmNN_Runtime,
+ ZERO,
+ ZERO,
+ ONE,
+ backendsUnregistered,
+ "The number of unregistered backends",
+ backends);
+ ARMNN_ASSERT(unregisteredBackendsCounter);
+ profilingService.InitializeCounterValue(unregisteredBackendsCounter->m_Uid);
+ }
+ // Register a counter for the number of inferences run
+ std::string inferences("inferences");
+ std::string inferencesRun("Inferences run");
+ if (!profilingService.IsCounterRegistered(inferencesRun))
+ {
+ const arm::pipe::Counter* inferencesRunCounter =
+ profilingService.GetCounterRegistry().RegisterCounter(armnn::profiling::BACKEND_ID.Get(),
+ arm::pipe::INFERENCES_RUN,
+ ArmNN_Runtime,
+ ZERO,
+ ZERO,
+ ONE,
+ inferencesRun,
+ "The number of inferences run",
+ inferences);
+ ARMNN_ASSERT(inferencesRunCounter);
+ profilingService.InitializeCounterValue(inferencesRunCounter->m_Uid);
+ }
+}
+
+} // namespace armnn