COMPMID-998: Release unused trainable parameters.

Change-Id: I361a520f34080016a25bc86e1e6789777c5152c1
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/124432
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Tested-by: Jenkins <bsgcomp@arm.com>
diff --git a/src/graph2/backends/NEON/NESubTensorHandle.cpp b/src/graph2/backends/NEON/NESubTensorHandle.cpp
index 491cf82..1cd15be 100644
--- a/src/graph2/backends/NEON/NESubTensorHandle.cpp
+++ b/src/graph2/backends/NEON/NESubTensorHandle.cpp
@@ -61,6 +61,11 @@
     // noop
 }
 
+void NESubTensorHandle::release_if_unused()
+{
+    // noop
+}
+
 bool NESubTensorHandle::is_subtensor() const
 {
     return true;
diff --git a/src/graph2/backends/NEON/NETensorHandle.cpp b/src/graph2/backends/NEON/NETensorHandle.cpp
index a4af8aa..0b901c3 100644
--- a/src/graph2/backends/NEON/NETensorHandle.cpp
+++ b/src/graph2/backends/NEON/NETensorHandle.cpp
@@ -59,6 +59,15 @@
 {
 }
 
+void NETensorHandle::release_if_unused()
+{
+    // TODO (geopin01): Release tensor only if all sub-tensors are marked as not used
+    if(!_tensor.is_used())
+    {
+        _tensor.allocator()->free();
+    }
+}
+
 bool NETensorHandle::is_subtensor() const
 {
     return false;