aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorColm Donelan <colm.donelan@arm.com>2024-03-25 17:54:04 +0000
committerColm Donelan <colm.donelan@arm.com>2024-03-28 22:09:27 +0000
commitf760c939d45c9e59fc10db8db220d30ecc65adf0 (patch)
tree634440a53d680f49d690c037309368777b8f7486 /tests
parenta778dc3739e16471597e79987036f4a6c50e537b (diff)
downloadarmnn-f760c939d45c9e59fc10db8db220d30ecc65adf0.tar.gz
MLCE-1245 Fixing runtime memory handling in delegate and ArmNN executor.
Neither the armnn_delegate nor the ArmNNExecutor unloaded their network before being destructed. This was leaking significant memory. Signed-off-by: Colm Donelan <colm.donelan@arm.com> Change-Id: I61db2e6cbbff4ec4771e86ac71eab90c02389c9e
Diffstat (limited to 'tests')
-rw-r--r--tests/ExecuteNetwork/ArmNNExecutor.cpp7
-rw-r--r--tests/ExecuteNetwork/ArmNNExecutor.hpp7
2 files changed, 12 insertions, 2 deletions
diff --git a/tests/ExecuteNetwork/ArmNNExecutor.cpp b/tests/ExecuteNetwork/ArmNNExecutor.cpp
index 58655c1814..121d3fab15 100644
--- a/tests/ExecuteNetwork/ArmNNExecutor.cpp
+++ b/tests/ExecuteNetwork/ArmNNExecutor.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2024 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -89,6 +89,11 @@ ArmNNExecutor::ArmNNExecutor(const ExecuteNetworkParams& params, armnn::IRuntime
}
}
+ArmNNExecutor::~ArmNNExecutor()
+{
+ m_Runtime->UnloadNetwork(m_NetworkId);
+}
+
void ArmNNExecutor::ExecuteAsync()
{
#if !defined(ARMNN_DISABLE_THREADS)
diff --git a/tests/ExecuteNetwork/ArmNNExecutor.hpp b/tests/ExecuteNetwork/ArmNNExecutor.hpp
index b0b29deffd..cbc8607137 100644
--- a/tests/ExecuteNetwork/ArmNNExecutor.hpp
+++ b/tests/ExecuteNetwork/ArmNNExecutor.hpp
@@ -38,13 +38,18 @@ class ArmNNExecutor : public IExecutor
{
public:
ArmNNExecutor(const ExecuteNetworkParams& params, armnn::IRuntime::CreationOptions runtimeOptions);
+ ~ArmNNExecutor();
+ ArmNNExecutor(const ArmNNExecutor&) = delete; // No copy constructor.
+ ArmNNExecutor & operator=(const ArmNNExecutor&) = delete; // No Copy operator.
std::vector<const void* > Execute() override;
void PrintNetworkInfo() override;
void CompareAndPrintResult(std::vector<const void*> otherOutput) override;
private:
-
+ ArmNNExecutor(ArmNNExecutor&&); // No move constructor.
+ ArmNNExecutor& operator=(ArmNNExecutor&&); // No move operator.
+
/**
* Returns a pointer to the armnn::IRuntime* this will be shared by all ArmNNExecutors.
*/