aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2020-05-15 18:41:05 +0100
committerfinn.williams <finn.williams@arm.com>2020-05-19 11:45:57 +0000
commit45a736263e117b484528e6dee05c549beae721b4 (patch)
treec674cd5bcd8e22c218c50fadf4c724691c415210
parentb98032f6a46072fee9a2bfcbe631b8193ced567d (diff)
downloadarmnn-45a736263e117b484528e6dee05c549beae721b4.tar.gz
IVGCVSW-4834 Add calls to increment REGISTERED_BACKENDS and UNREGISTERED_BACKENDS
Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: I3600dd15f97ccd4ab745deb87d06ba978e2a0b11
-rw-r--r--include/armnn/BackendRegistry.hpp7
-rw-r--r--src/armnn/BackendRegistry.cpp20
-rw-r--r--src/armnn/Runtime.cpp3
-rw-r--r--src/backends/backendsCommon/test/BackendProfilingTests.cpp2
-rw-r--r--src/profiling/ProfilingService.cpp4
5 files changed, 35 insertions, 1 deletions
diff --git a/include/armnn/BackendRegistry.hpp b/include/armnn/BackendRegistry.hpp
index 1aaa11c55c..fe6451cde0 100644
--- a/include/armnn/BackendRegistry.hpp
+++ b/include/armnn/BackendRegistry.hpp
@@ -6,6 +6,7 @@
#include <armnn/Types.hpp>
#include <armnn/BackendId.hpp>
+#include <armnn/Optional.hpp>
#include <memory>
#include <unordered_map>
@@ -14,6 +15,10 @@
namespace armnn
{
+namespace profiling
+{
+ class ProfilingService;
+}
class IBackendInternal;
using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>;
@@ -29,6 +34,7 @@ public:
size_t Size() const;
BackendIdSet GetBackendIds() const;
std::string GetBackendIdsAsString() const;
+ void SetProfilingService(armnn::Optional<profiling::ProfilingService&> profilingService);
BackendRegistry() {}
virtual ~BackendRegistry() {}
@@ -56,6 +62,7 @@ private:
BackendRegistry& operator=(const BackendRegistry&) = delete;
FactoryStorage m_Factories;
+ armnn::Optional<profiling::ProfilingService&> m_ProfilingService;
};
BackendRegistry& BackendRegistryInstance();
diff --git a/src/armnn/BackendRegistry.cpp b/src/armnn/BackendRegistry.cpp
index a79cdd0bb2..ff63c8236a 100644
--- a/src/armnn/BackendRegistry.cpp
+++ b/src/armnn/BackendRegistry.cpp
@@ -5,6 +5,7 @@
#include <armnn/BackendRegistry.hpp>
#include <armnn/Exceptions.hpp>
+#include <ProfilingService.hpp>
namespace armnn
{
@@ -24,11 +25,25 @@ void BackendRegistry::Register(const BackendId& id, BackendRegistry::FactoryFunc
CHECK_LOCATION());
}
m_Factories[id] = factory;
+
+ if (m_ProfilingService.has_value())
+ {
+ if (m_ProfilingService.has_value() && m_ProfilingService.value().IsProfilingEnabled())
+ {
+ m_ProfilingService.value().IncrementCounterValue(armnn::profiling::REGISTERED_BACKENDS);
+ }
+ }
+
}
void BackendRegistry::Deregister(const BackendId& id)
{
m_Factories.erase(id);
+
+ if (m_ProfilingService.has_value() && m_ProfilingService.value().IsProfilingEnabled())
+ {
+ m_ProfilingService.value().IncrementCounterValue(armnn::profiling::UNREGISTERED_BACKENDS);
+ }
}
bool BackendRegistry::IsBackendRegistered(const BackendId& id) const
@@ -86,5 +101,10 @@ void BackendRegistry::Swap(BackendRegistry& instance, BackendRegistry::FactorySt
std::swap(instance.m_Factories, other);
}
+void BackendRegistry::SetProfilingService(armnn::Optional<profiling::ProfilingService&> profilingService)
+{
+ m_ProfilingService = profilingService;
+}
+
} // namespace armnn
diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp
index 483eea7165..dbdd409784 100644
--- a/src/armnn/Runtime.cpp
+++ b/src/armnn/Runtime.cpp
@@ -220,6 +220,7 @@ Runtime::Runtime(const CreationOptions& options)
}
}
+ BackendRegistryInstance().SetProfilingService(m_ProfilingService);
// pass configuration info to the profiling service
m_ProfilingService.ConfigureProfilingService(options.m_ProfilingOptions);
@@ -269,6 +270,8 @@ Runtime::~Runtime()
DynamicBackendUtils::DeregisterDynamicBackends(m_DeviceSpec.GetDynamicBackends());
m_DeviceSpec.ClearDynamicBackends();
m_BackendContexts.clear();
+
+ BackendRegistryInstance().SetProfilingService(armnn::EmptyOptional());
}
LoadedNetwork* Runtime::GetLoadedNetworkPtr(NetworkId networkId) const
diff --git a/src/backends/backendsCommon/test/BackendProfilingTests.cpp b/src/backends/backendsCommon/test/BackendProfilingTests.cpp
index 52b6e239f7..66f99bea8c 100644
--- a/src/backends/backendsCommon/test/BackendProfilingTests.cpp
+++ b/src/backends/backendsCommon/test/BackendProfilingTests.cpp
@@ -118,7 +118,7 @@ BOOST_AUTO_TEST_CASE(BackendProfilingCounterRegisterMockBackendTest)
{
// Reset the profiling service to the uninitialized state
armnn::IRuntime::CreationOptions options;
- options.m_ProfilingOptions.m_EnableProfiling = true;;
+ options.m_ProfilingOptions.m_EnableProfiling = true;
armnn::MockBackendInitialiser initialiser;
// Create a runtime
diff --git a/src/profiling/ProfilingService.cpp b/src/profiling/ProfilingService.cpp
index a26bba2e60..21972b4c7f 100644
--- a/src/profiling/ProfilingService.cpp
+++ b/src/profiling/ProfilingService.cpp
@@ -377,6 +377,10 @@ void ProfilingService::Initialize()
std::string("backends"));
ARMNN_ASSERT(registeredBackendsCounter);
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
+ SetCounterValue(armnn::profiling::REGISTERED_BACKENDS, static_cast<uint32_t>(BackendRegistryInstance().Size()));
}
// Register a counter for the number of registered backends
if (!m_CounterDirectory.IsCounterRegistered("Backends unregistered"))