aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/NEON/functions/NEGEMM.cpp
diff options
context:
space:
mode:
authorSiCongLi <sicong.li@arm.com>2020-03-02 15:39:15 +0000
committerSiCong Li <sicong.li@arm.com>2020-03-25 11:23:19 +0000
commit2e5fd637205770ec5e11096e6e19b8efc67d544e (patch)
treec7f5b53d6ec54cf39fcc638bad9d054c3e04bf43 /src/runtime/NEON/functions/NEGEMM.cpp
parent51a9558d484e812707a776efceef18b93698cec9 (diff)
downloadComputeLibrary-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.cpp14
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;