aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp')
-rw-r--r--src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp b/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
index 084c4df718..87c4a306aa 100644
--- a/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
+++ b/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp
@@ -374,7 +374,6 @@ void CLGEMMConvolutionLayer::run()
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 @@ void CLGEMMConvolutionLayer::run()
{
// 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 @@ void CLGEMMConvolutionLayer::run()
}
_memory_group.release();
+
+ _is_first_run = false;
}