diff options
author | Nikita Shulga <nshulga@meta.com> | 2024-08-07 17:35:05 +0100 |
---|---|---|
committer | Pablo Marquez Tello <pablo.tello@arm.com> | 2024-08-08 12:25:48 +0000 |
commit | 8f029ff2a020bc7ca61d83f03665ef95f2f18b2e (patch) | |
tree | cdd5b66f2d70725f58e7747e6e0ef22bb3d944de /tests/validation_new/fixtures/FullyConnectedLayerFixture.h | |
parent | 841401553677c112382f30dbff089a210158d374 (diff) | |
download | ComputeLibrary-release_candidate.tar.gz |
fix: illegal intruction in multi_isa armv8a.release_candidate
Delay Winograd transform initialization
Move static global variables to `implementation_list` thus delaying it's consutrction in a thread-safe manner, according to C++11 statement declaration spec:
> Dynamic initialization of a block variable with static storage duration or thread storage duration is performed the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not complete, so it will be tried again the next time control enters the declaration. If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
This fixes SIGILL when one tries to use `libarm_compute.so` compiled with multi-isa support on Cortex-A72 and to the best of my knowledge fixes https://github.com/pytorch/pytorch/issues/132032
Signed-off-by: Nikita Shulga <nshulga@meta.com>
Change-Id: I6c08907222e1575b79e2133529fa7e5fd0138932
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/12101
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-by: Pablo Marquez Tello <pablo.tello@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation_new/fixtures/FullyConnectedLayerFixture.h')
0 files changed, 0 insertions, 0 deletions