aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDerek Lamberti <derek.lamberti@arm.com>2021-10-13 18:02:25 +0100
committerJim Flynn <jim.flynn@arm.com>2021-10-15 13:38:20 +0000
commitf1e0ad38f1bc064e78e795f57db23901cf13f4ce (patch)
tree0effd64bb342fce10cc50ecd6bd5f27c64188ddc /src
parentac00253514bcb9d60d881f190eba8af83786327e (diff)
downloadarmnn-f1e0ad38f1bc064e78e795f57db23901cf13f4ce.tar.gz
Profiling instrumentation throughout the Optimizer
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com> Change-Id: Ifcdafc12ca09455af2389bf84e34b6b87bbb0b15
Diffstat (limited to 'src')
-rw-r--r--src/armnn/Network.cpp26
-rw-r--r--src/armnn/Optimizer.cpp1
2 files changed, 22 insertions, 5 deletions
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 39af10f2ac..4298b05528 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -886,6 +886,7 @@ OptimizationResult AssignBackends(OptimizedNetworkImpl* optNetObjPtr,
Graph::Iterator& lastLayer,
Optional<std::vector<std::string>&> errMessages)
{
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_AssignBackends");
OptimizationResult result;
// Helper lambda to compose meaningful error message before returning with error
@@ -1046,7 +1047,7 @@ OptimizationResult ApplyBackendOptimizations(OptimizedNetworkImpl* optNetObjPtr,
Optional<std::vector<std::string>&> errMessages)
{
ARMNN_ASSERT(optNetObjPtr);
-
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_ApplyBackendOptimizations")
OptimizationResult result;
// Get the optimized graph
@@ -1078,6 +1079,7 @@ OptimizationResult ApplyBackendOptimizations(OptimizedNetworkImpl* optNetObjPtr,
for (auto& subgraph : subgraphs)
{
// Try to optimize the current sub-graph
+ ARMNN_SCOPED_PROFILING_EVENT(backendObjPtr->GetId(), "Optimizer_OptimizeSubgraph");
OptimizationViews optimizationViews = backendObjPtr->OptimizeSubgraphView(*subgraph, modelOptions);
ARMNN_ASSERT(optimizationViews.Validate(*subgraph));
@@ -1498,6 +1500,7 @@ OptimizationResult SelectTensorHandleStrategy(Graph& optGraph,
bool importEnabled,
Optional<std::vector<std::string>&> errMessages)
{
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_SelectTensorHandleStrategy");
OptimizationResult result;
optGraph.ForEachLayer([&backends, &registry, &result, &errMessages, importEnabled](Layer* layer)
@@ -1566,6 +1569,12 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
const OptimizerOptions& options,
Optional<std::vector<std::string>&> messages)
{
+ // Enable profiling
+ auto profiler = inNetwork.pNetworkImpl->GetGraph().GetProfiler();
+ ProfilerManager::GetInstance().RegisterProfiler(profiler.get());
+ profiler->EnableProfiling(options.m_ProfilingEnabled);
+
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer");
if (backendPreferences.empty())
{
throw InvalidArgumentException("Invoked Optimize with no backends specified");
@@ -1630,6 +1639,7 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
// If Fp32 to Fp16 optimization is set convert Fp32 network to Fp16
if (options.m_ReduceFp32ToFp16)
{
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_ReduceFp32ToFp16");
Optimizer::Pass(optGraph, MakeOptimizations(Fp32NetworkToFp16Converter()));
Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsFloatToHalf()));
}
@@ -1639,6 +1649,7 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
// Only Constant weight of Convolution2d and FullyConnected are converted from Fp32 to Bf16
if (options.m_ReduceFp32ToBf16)
{
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_ReduceFp32ToBf16");
Optimizer::Pass(optGraph, MakeOptimizations(Fp32NetworkToBf16Converter()));
}
@@ -1706,12 +1717,17 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
}
// Based on the tensor handle strategy determined above, insert copy layers where required.
- optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry);
+ {
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_AddCompatibilityLayers");
+ optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry);
+ }
// Convert constants
- Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsFloatToHalf()));
- Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsHalfToFloat()));
-
+ {
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_ConvertConstants");
+ Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsFloatToHalf()));
+ Optimizer::Pass(optGraph, MakeOptimizations(ConvertConstantsHalfToFloat()));
+ }
return optNet;
}
bool NetworkImpl::GetShapeInferenceMethod()
diff --git a/src/armnn/Optimizer.cpp b/src/armnn/Optimizer.cpp
index 9c7e51614e..1d6a52efed 100644
--- a/src/armnn/Optimizer.cpp
+++ b/src/armnn/Optimizer.cpp
@@ -15,6 +15,7 @@ Optimizer::Optimizer()
void Optimizer::Pass(Graph& graph, const Optimizations& optimizations)
{
+ ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_Pass");
// Create observables to observe changes to the graph
AddedLayerObservable addedLayerObservable(graph);
ErasedLayerNamesObservable erasedLayerNamesObservable(graph);