diff options
author | Gunes Bayir <gunbay01@e120783.arm.com> | 2024-03-16 23:40:39 +0000 |
---|---|---|
committer | Gunes Bayir <gunes.bayir@arm.com> | 2024-03-18 14:45:59 +0000 |
commit | 3e4b193f783c2d43547123518cadd1b2a9b11055 (patch) | |
tree | 19e58f8e06d0ca698de5b735ab3a62ef478404ca /src/core/NEON/kernels/NEFFTDigitReverseKernel.h | |
parent | 5a6773343f81cec47baa80dcac13bf72168bd987 (diff) | |
download | ComputeLibrary-3e4b193f783c2d43547123518cadd1b2a9b11055.tar.gz |
Fix quant. gemv kernel driver by adding set_quantized_bias()
arm_gemm fuses the actual bias addition with the output stage in quantized gemm.
The output stage, in its very basic form, is:
A_offset * B_offset - sum(A_row_i) * B_offset - sum(B_col_j) * A_offset
Matrix B is usually constant (e.g. weight matrix in convolutions). Therefore, except the middle term above, the expression is constant across the same output row because the column sums of matrix B are pre-calculated.
The bias is also usually constant. When it is, it makes sense to add the bias vector to the above sum and just perform a single addition on top of the output tensor.
For this to happen, the column sum computation of B tensor must account for the bias. This is ensured by set_quantized_bias() method in the interface. This function passes the bias pointer and strides to arm_gemm.
Gemv_pretransposed does not implement set_quantized_bias() and uses the parent function, which does nothing. Therefore, the bias is not added to the output. This causes tests to fail.
Resolves: COMPMID-6928
Change-Id: Iba24fabc65fdc47edb12db6abff2fb47784c0743
Signed-off-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/11310
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Jakub Sujak <jakub.sujak@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/NEFFTDigitReverseKernel.h')
0 files changed, 0 insertions, 0 deletions