aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2021-01-15 09:42:26 +0000
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-01-15 15:20:13 +0000
commitddd79f5a1e92bfea85ad2104f15c991952f65ef8 (patch)
tree939ba948e61d9d54861f030ecb788e81c5bc2171
parent18fbb92a5e0190c071274d69b3341e9d58ac178e (diff)
downloadComputeLibrary-ddd79f5a1e92bfea85ad2104f15c991952f65ef8.tar.gz
Release winograd transformed weights if not needed on NEON
GEMM function used within NEWinogradLayer re-transforms the weights after the original winograd transformation leading to double allocation of the weights. Release appropriately and retain only one copy of the weights, the last transformed one. Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Change-Id: I60459bfe370bff453150dfe9536cd9e7a5b56def Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4862 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
-rw-r--r--src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
index bd3bdd6a26..21a4b7973a 100644
--- a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2020 Arm Limited.
+ * Copyright (c) 2017-2021 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -766,8 +766,14 @@ void NEWinogradConvolutionLayer::prepare()
// Transform weights
_kernel_storage.allocator()->allocate();
NEScheduler::get().schedule(_transform_weights_kernel.get(), Window::DimX);
-
_weights_hwio.allocator()->free();
+
+ _gemm_function.prepare();
+ if(!_kernel_storage.is_used())
+ {
+ _kernel_storage.allocator()->free();
+ }
+
_is_prepared = true;
}
}