COMPMID-959: Sets memory manager to CLWinograd

-Sets memory manager to Winograd functions
-Marks CLGEMM inputs as unused if needed

Change-Id: I425a3f864c756e0e2b4da895e1730b8822149ba8
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/128891
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp b/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
index 084c4df..87c4a30 100644
--- a/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
+++ b/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
@@ -374,7 +374,6 @@
         ARM_COMPUTE_ERROR_ON(!_original_weights->is_used());
 
         _reshape_weights.run();
-        _is_first_run = false;
 
         // Mark original weights tensor as unused
         _original_weights->mark_as_unused();
@@ -398,6 +397,13 @@
     {
         // Run gemm
         _mm_gemm.run();
+
+        // Release reshaped weights if marked unused by CLGEMM
+        if(_is_first_run && !_weights_reshaped.is_used())
+        {
+            CLScheduler::get().queue().finish();
+            _weights_reshaped.allocator()->free();
+        }
     }
 
     // Reshape output matrix
@@ -410,4 +416,6 @@
     }
 
     _memory_group.release();
+
+    _is_first_run = false;
 }