Optimize Quantized/Integer Bilinear Scale for Neon™
This patch introduces several performance optimizations regarding the Bilinear Scale operator with REPLICATE Border mode. Changes apply only to NHWC.
This patch
- Reduces the memory footprint by disabling precomputation of indices and weights when they're not used
- Rewrites the kernels for QASYMM8/QASYMM8_SIGNED/U8(Uint8)
- Adds S8(Int8) Bilinear Scale for Border mode REPLICATE
- Removes Bilinear Scale SVE kernels for Quantized and Integer types and adjust the heuristics to choose the Neon™ implementation
- Adds new test cases where the input and output of the Bilinear Scale operator have different quantization scale and offset
Resolves: COMPMID-5453, COMPMID-5454
Change-Id: I3d251e76e0c6978fd5a0a1795ec62ab536bec93c
Signed-off-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/8250
Reviewed-by: SiCong Li <sicong.li@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
diff --git a/filelist.json b/filelist.json
index eb39915..431979e 100644
--- a/filelist.json
+++ b/filelist.json
@@ -1980,8 +1980,8 @@
"neon": {
"fp16": [ "src/cpu/kernels/scale/neon/fp16.cpp" ],
"integer": [ "src/cpu/kernels/scale/neon/integer.cpp" ],
- "qasymm8": [ "src/cpu/kernels/scale/neon/qasymm8.cpp" ],
- "qasymm8_signed": [ "src/cpu/kernels/scale/neon/qasymm8_signed.cpp" ]
+ "qasymm8": [ "src/cpu/kernels/scale/neon/qasymm8.cpp", "src/cpu/kernels/scale/neon/integer.cpp" ],
+ "qasymm8_signed": [ "src/cpu/kernels/scale/neon/qasymm8_signed.cpp", "src/cpu/kernels/scale/neon/integer.cpp" ]
}
}
},