diff options
author | SiCongLi <sicong.li@arm.com> | 2020-03-02 15:39:15 +0000 |
---|---|---|
committer | SiCong Li <sicong.li@arm.com> | 2020-03-25 11:23:19 +0000 |
commit | 2e5fd637205770ec5e11096e6e19b8efc67d544e (patch) | |
tree | c7f5b53d6ec54cf39fcc638bad9d054c3e04bf43 /src/runtime/NEON/functions/NEGEMM.cpp | |
parent | 51a9558d484e812707a776efceef18b93698cec9 (diff) | |
download | ComputeLibrary-2e5fd637205770ec5e11096e6e19b8efc67d544e.tar.gz |
COMPMID-3098 Fuse Relu and Bounded Relu with FullyConnected NEON
Change-Id: Id28062445590d6c06b35f7d7434eb38393ae94a7
Signed-off-by: SiCongLi <sicong.li@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2875
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/NEON/functions/NEGEMM.cpp')
-rw-r--r-- | src/runtime/NEON/functions/NEGEMM.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/runtime/NEON/functions/NEGEMM.cpp b/src/runtime/NEON/functions/NEGEMM.cpp index be964457fc..873145de12 100644 --- a/src/runtime/NEON/functions/NEGEMM.cpp +++ b/src/runtime/NEON/functions/NEGEMM.cpp @@ -336,25 +336,33 @@ void NEGEMM::prepare() { if(!_is_prepared) { + const bool original_b_managed_by_weights_manager = _weights_manager && _weights_manager->are_weights_managed(_original_b); if(_asm_glue.is_configured()) { - if(!_weights_manager || !_weights_manager->are_weights_managed(_original_b)) + if(!original_b_managed_by_weights_manager) { ARM_COMPUTE_ERROR_ON(!_original_b->is_used()); } _asm_glue.prepare(); + if(!original_b_managed_by_weights_manager) + { + _original_b->mark_as_unused(); + } } else if(_reshape_b_only_on_first_run && !_run_vector_matrix_multiplication && !_asm_glue.is_configured()) { - if(!_weights_manager || !_weights_manager->are_weights_managed(_original_b)) + if(!original_b_managed_by_weights_manager) { ARM_COMPUTE_ERROR_ON(!_original_b->is_used()); } _tmp_b.allocator()->allocate(); NEScheduler::get().schedule(&_transpose_kernel, Window::DimY); - _original_b->mark_as_unused(); + if(!original_b_managed_by_weights_manager) + { + _original_b->mark_as_unused(); + } } _is_prepared = true; |