diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-08-12 06:28:09 +0100 |
---|---|---|
committer | SiCong Li <sicong.li@arm.com> | 2021-08-12 14:23:46 +0000 |
commit | fa1db17a9ad7d35a77e76bf9c61ebc8756149ab2 (patch) | |
tree | 2b6a64b43afea654f423c64ac96a21b9d31a45c2 /src/runtime/cpu/operators/internal | |
parent | d761a3e3c153083cd3843fe686f27e3438c87d1c (diff) | |
download | ComputeLibrary-fa1db17a9ad7d35a77e76bf9c61ebc8756149ab2.tar.gz |
Ensure that correct transformed matrices are used in CpuFullyConnected
Execution pack of CpuFullyConnected was altered explicitly with local
objects that were getting out of scope. Leading to incorrect results or
memory related issues.
Track transformed weights and register the weights matrix explicitly
during execution honoring the object lifetime scope.
Resolves: COMPMID-4762, COMPMID-4764
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: I53449c377fb1cfccdf5e6f9505d963518748c318
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/c/VisualCompute/ComputeLibrary/+/349345
Tested-by: bsgcomp <bsgcomp@arm.com>
Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Comments-Addressed: bsgcomp <bsgcomp@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/6092
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Reviewed-by: SiCong Li <sicong.li@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/cpu/operators/internal')
-rw-r--r-- | src/runtime/cpu/operators/internal/CpuGemmAssemblyDispatch.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/runtime/cpu/operators/internal/CpuGemmAssemblyDispatch.cpp b/src/runtime/cpu/operators/internal/CpuGemmAssemblyDispatch.cpp index bbbd5ac458..9786161dee 100644 --- a/src/runtime/cpu/operators/internal/CpuGemmAssemblyDispatch.cpp +++ b/src/runtime/cpu/operators/internal/CpuGemmAssemblyDispatch.cpp @@ -424,6 +424,8 @@ void Fallback<TypeInput, TypeOutput, OutputStage>::prepare(ITensorPack &tensors) CpuAuxTensorHandler pretranspose(offset_int_vec(Pretranspose), _pretranspose_info, tensors, false); ARM_COMPUTE_ERROR_ON(pretranspose.get()->buffer() == nullptr); _gemm_kernel_asm->pretranspose_B_array(pretranspose.get()->buffer(), in1_ptr, ldb, multi_stride_b); + + b->mark_as_unused(); } if(_gemm_info.method == AsmConvMethod::Indirect) |