aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
diff options
context:
space:
mode:
authorSiCong Li <sicong.li@arm.com>2020-12-02 09:43:12 +0000
committerGeorgios Pinitas <georgios.pinitas@arm.com>2020-12-03 23:22:01 +0000
commit7b48166b37d30dc0d651e5f366a691b38a0c8006 (patch)
tree690038c7a3e3c508c346f9a0ac09a8a1a7213273 /src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
parenta085a0c91c5b3061e616fa810d81be5798b240d8 (diff)
downloadComputeLibrary-7b48166b37d30dc0d651e5f366a691b38a0c8006.tar.gz
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 <sicong.li@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4638 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp')
-rw-r--r--src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
index a3bdde24b0..8fc788c402 100644
--- a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
@@ -169,7 +169,7 @@ void NEGEMMConvolutionLayer::configure_mm(const ITensor *input, const ITensor *w
output_info.is_quantized_per_channel = (weights->info()->data_type() == DataType::QSYMM8_PER_CHANNEL);
quantization::calculate_quantized_multipliers(iqinfo, wqinfo, oqinfo, output_info);
- _mm_gemmlowp.configure(input, weights, biases, output, GEMMInfo(false, false, true, gemm_3d_depth, _skip_im2col, false, output_info));
+ _mm_gemmlowp.configure(input, weights, biases, output, GEMMInfo(false, false, true, gemm_3d_depth, _skip_im2col, false, output_info, false, false, act_info));
// Revert back QuantizatioInfo as input and weights could be used in other convolution layers
input->info()->set_quantization_info(iqinfo);
@@ -232,7 +232,7 @@ Status NEGEMMConvolutionLayer::validate_mm(const ITensorInfo *input, const ITens
std::unique_ptr<ITensorInfo> weights_qa = weights->clone();
input_qa->set_quantization_info(QuantizationInfo(iqinfo.uniform().scale, -iqinfo.uniform().offset));
weights_qa->set_quantization_info(QuantizationInfo(wqinfo.uniform().scale, -wqinfo.uniform().offset));
- return NEGEMMLowpMatrixMultiplyCore::validate(input_qa.get(), weights_qa.get(), biases, output, GEMMInfo(false, false, true, gemm_3d_depth, skip_im2col, false, output_info));
+ return NEGEMMLowpMatrixMultiplyCore::validate(input_qa.get(), weights_qa.get(), biases, output, GEMMInfo(false, false, true, gemm_3d_depth, skip_im2col, false, output_info, false, false, act_info));
}
else
{