aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Runtime.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnn/Runtime.cpp')
-rw-r--r--src/armnn/Runtime.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp
index 47c998a6fd..c1416f94d7 100644
--- a/src/armnn/Runtime.cpp
+++ b/src/armnn/Runtime.cpp
@@ -16,6 +16,7 @@
#include <iostream>
#include <boost/polymorphic_cast.hpp>
+#include <backends/BackendProfiling.hpp>
using namespace armnn;
using namespace std;
@@ -181,6 +182,19 @@ Runtime::Runtime(const CreationOptions& options)
m_BackendContexts.emplace(std::make_pair(id, std::move(context)));
}
supportedBackends.emplace(id);
+
+ unique_ptr<armnn::profiling::IBackendProfiling> profilingIface =
+ std::make_unique<armnn::profiling::BackendProfiling>(armnn::profiling::BackendProfiling(
+ options, armnn::profiling::ProfilingService::Instance(), id));
+
+ // Backends may also provide a profiling context. Ask for it now.
+ auto profilingContext = backend->CreateBackendProfilingContext(options, profilingIface);
+ // Backends that don't support profiling will return a null profiling context.
+ if (profilingContext)
+ {
+ // Pass the context onto the profiling service.
+ armnn::profiling::ProfilingService::Instance().AddBackendProfilingContext(id, profilingContext);
+ }
}
catch (const BackendUnavailableException&)
{
@@ -230,9 +244,11 @@ Runtime::~Runtime()
}
}
+
// Clear all dynamic backends.
DynamicBackendUtils::DeregisterDynamicBackends(m_DeviceSpec.GetDynamicBackends());
m_DeviceSpec.ClearDynamicBackends();
+ m_BackendContexts.clear();
}
LoadedNetwork* Runtime::GetLoadedNetworkPtr(NetworkId networkId) const