From 7b48166b37d30dc0d651e5f366a691b38a0c8006 Mon Sep 17 00:00:00 2001 From: SiCong Li Date: Wed, 2 Dec 2020 09:43:12 +0000 Subject: Fix NEGEMMLowpMatrixMultiplyCore nonfused activation * Include the missing activation info when passing it from NEGEMMConvolutionLayer to NEGEMMLowpMatrixMultiplyCore * Fix the logics for running the separate NEActivationLayer when it cannot be fused into NEGEMMAssemblyDispatch Resolves COMPMID-4039 Change-Id: Id6b3a698333f278ee65f195853c7d3b5c7adec72 Signed-off-by: SiCong Li Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4638 Tested-by: Arm Jenkins Reviewed-by: Georgios Pinitas Comments-Addressed: Arm Jenkins --- .../NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp') diff --git a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp index d8f9d08c13..50c7fe4c66 100644 --- a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp +++ b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp @@ -257,14 +257,13 @@ void NEGEMMLowpMatrixMultiplyCore::configure(const ITensor *a, const ITensor *b, _offset_contribution_kernel = std::make_unique(); _offset_contribution_kernel->configure(output, _a_offset == 0 ? nullptr : &_vector_sum_col, _b_offset == 0 ? nullptr : &_vector_sum_row, a_to_use->info()->dimension(0), _a_offset, _b_offset); } - - // Configure activation - const ActivationLayerInfo &activation = gemm_info.activation_info(); - _run_activation = activation.enabled() && (!_assembly_path || (_assembly_path && !NEGEMMAssemblyDispatch::is_activation_supported(activation))); - if(_run_activation) - { - _activation_func.configure(output, nullptr, activation); - } + } + // Configure activation + const ActivationLayerInfo &activation = gemm_info.activation_info(); + _run_activation = activation.enabled() && (!_assembly_path || !NEGEMMAssemblyDispatch::is_activation_supported(activation)); + if(_run_activation) + { + _activation_func.configure(output, nullptr, activation); } // Allocate tensors @@ -564,7 +563,7 @@ void NEGEMMLowpMatrixMultiplyCore::run() } // Run fused activation unless already run in the fused assembly - if(_run_activation && !_fused_assembly_path) + if(_run_activation) { _activation_func.run(); } -- cgit v1.2.1