diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-01-15 09:42:26 +0000 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-01-15 15:20:13 +0000 |
commit | ddd79f5a1e92bfea85ad2104f15c991952f65ef8 (patch) | |
tree | 939ba948e61d9d54861f030ecb788e81c5bc2171 /src | |
parent | 18fbb92a5e0190c071274d69b3341e9d58ac178e (diff) | |
download | ComputeLibrary-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp | 10 |
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; } } |