aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColm Donelan <colm.donelan@arm.com>2024-03-04 22:19:26 +0000
committerColm Donelan <colm.donelan@arm.com>2024-03-04 22:19:26 +0000
commit253d1bb78a6ac543968129925c9a69ddb880b4dc (patch)
treed62082709676b3d8f67de17be867276afabd1567
parent2ab3032ae39d129ef79115cad9084a7074606b59 (diff)
downloadarmnn-253d1bb78a6ac543968129925c9a69ddb880b4dc.tar.gz
IVGCVSW-7572 Only print JSON profiling once per ArmnnSubgraph.
Previously the JSON profiling was printed once per delegate invoke call. Modify that to print only once per ArmnnSubgraph. Data from multiple inferences is grouped together. Signed-off-by: Colm Donelan <colm.donelan@arm.com> Change-Id: I1beb60eae4685c8e628dd1939f41bd649fc2a6ba
-rw-r--r--delegate/classic/include/armnn_delegate.hpp4
-rw-r--r--delegate/classic/src/armnn_delegate.cpp18
-rw-r--r--delegate/opaque/include/armnn_delegate.hpp4
-rw-r--r--delegate/opaque/src/armnn_delegate.cpp18
4 files changed, 28 insertions, 16 deletions
diff --git a/delegate/classic/include/armnn_delegate.hpp b/delegate/classic/include/armnn_delegate.hpp
index e94a6e2d4e..a6957dc7d5 100644
--- a/delegate/classic/include/armnn_delegate.hpp
+++ b/delegate/classic/include/armnn_delegate.hpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2024 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -98,6 +98,8 @@ public:
const TfLiteDelegateParams* parameters,
const Delegate* delegate);
+ ~ArmnnSubgraph();
+
TfLiteStatus Prepare(TfLiteContext* tfLiteContext);
TfLiteStatus Invoke(TfLiteContext* tfLiteContext, TfLiteNode* tfLiteNode);
diff --git a/delegate/classic/src/armnn_delegate.cpp b/delegate/classic/src/armnn_delegate.cpp
index 57488fc3de..05bf9b2ee7 100644
--- a/delegate/classic/src/armnn_delegate.cpp
+++ b/delegate/classic/src/armnn_delegate.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2024 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -273,6 +273,16 @@ const std::string Delegate::GetVersion()
return DELEGATE_VERSION;
}
+ArmnnSubgraph::~ArmnnSubgraph()
+{
+ // The delegate holds its own Arm NN runtime so this is our last chance to print internal profiling data.
+ std::shared_ptr<armnn::IProfiler> profiler = m_Runtime->GetProfiler(m_NetworkId);
+ if (profiler && profiler->IsProfilingEnabled())
+ {
+ profiler->Print(std::cout);
+ }
+}
+
TfLiteStatus ArmnnSubgraph::AddInputLayer(DelegateData& delegateData,
TfLiteContext* tfLiteContext,
const TfLiteIntArray* inputs,
@@ -526,12 +536,6 @@ TfLiteStatus ArmnnSubgraph::Invoke(TfLiteContext* tfLiteContext, TfLiteNode* tfL
// Run graph
auto status = m_Runtime->EnqueueWorkload(m_NetworkId, inputTensors, outputTensors);
- // The delegate holds its own Arm NN runtime so this is our last chance to print internal profiling data.
- std::shared_ptr<armnn::IProfiler> profiler = m_Runtime->GetProfiler(m_NetworkId);
- if (profiler && profiler->IsProfilingEnabled())
- {
- profiler->Print(std::cout);
- }
return (status == armnn::Status::Success) ? kTfLiteOk : kTfLiteError;
}
diff --git a/delegate/opaque/include/armnn_delegate.hpp b/delegate/opaque/include/armnn_delegate.hpp
index ae85556884..57fc9c288a 100644
--- a/delegate/opaque/include/armnn_delegate.hpp
+++ b/delegate/opaque/include/armnn_delegate.hpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2023-2024 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -128,6 +128,8 @@ public:
const TfLiteOpaqueDelegateParams* parameters,
const ArmnnOpaqueDelegate* delegate);
+ ~ArmnnSubgraph();
+
TfLiteStatus Prepare(TfLiteOpaqueContext* tfLiteContext);
TfLiteStatus Invoke(TfLiteOpaqueContext* tfLiteContext, TfLiteOpaqueNode* tfLiteNode);
diff --git a/delegate/opaque/src/armnn_delegate.cpp b/delegate/opaque/src/armnn_delegate.cpp
index 54bdf36982..4ed0a78013 100644
--- a/delegate/opaque/src/armnn_delegate.cpp
+++ b/delegate/opaque/src/armnn_delegate.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2023-2024 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -376,6 +376,16 @@ TfLiteIntArray* ArmnnOpaqueDelegate::IdentifyOperatorsToDelegate(TfLiteOpaqueCon
return nodesToDelegate;
}
+ArmnnSubgraph::~ArmnnSubgraph()
+{
+ // The delegate holds its own Arm NN runtime so this is our last chance to print internal profiling data.
+ std::shared_ptr<armnn::IProfiler> profiler = m_Runtime->GetProfiler(m_NetworkId);
+ if (profiler && profiler->IsProfilingEnabled())
+ {
+ profiler->Print(std::cout);
+ }
+}
+
TfLiteStatus ArmnnSubgraph::AddInputLayer(DelegateData& delegateData,
TfLiteOpaqueContext* tfLiteContext,
const TfLiteIntArray* inputs,
@@ -668,12 +678,6 @@ TfLiteStatus ArmnnSubgraph::Invoke(TfLiteOpaqueContext* tfLiteContext, TfLiteOpa
try
{
auto status = m_Runtime->EnqueueWorkload(m_NetworkId, inputTensors, outputTensors);
- // The delegate holds its own Arm NN runtime so this is our last chance to print internal profiling data.
- std::shared_ptr<armnn::IProfiler> profiler = m_Runtime->GetProfiler(m_NetworkId);
- if (profiler && profiler->IsProfilingEnabled())
- {
- profiler->Print(std::cout);
- }
return (status == armnn::Status::Success) ? kTfLiteOk : kTfLiteError;
}
catch (armnn::InvalidArgumentException& ex)