aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp
diff options
context:
space:
mode:
authorGunes Bayir <gunes.bayir@arm.com>2021-09-13 13:24:38 +0100
committerGunes Bayir <gunes.bayir@arm.com>2021-09-15 14:24:28 +0000
commite42a87ffd23a334b802b47a52ec28ad6c90bfbf0 (patch)
tree14552aafc0958457bdd5c3c1d324e7d069a4520a /src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp
parent7bc1a778520f3a8477d88819faeaca8ff77859fa (diff)
downloadComputeLibrary-e42a87ffd23a334b802b47a52ec28ad6c90bfbf0.tar.gz
Update cpu heuristics for GEMM
If available, it prefers MMLA over DOT for smallK kernels for int8 types for faster execution. Signed-off-by: Gunes Bayir <gunes.bayir@arm.com> Change-Id: I190142dc66555476b4d8266d22e54ce8b45fffdb Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/6251 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp')
-rw-r--r--src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp b/src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp
index abd2799583..b277e56000 100644
--- a/src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp
+++ b/src/core/NEON/kernels/arm_gemm/gemm_quint8.cpp
@@ -80,7 +80,7 @@ GemmImplementation<uint8_t, uint8_t, Requantize32>::with_estimate(
GemmMethod::GEMM_HYBRID_QUANTIZED,
"sve_smallK_hybrid_u8u32_dot_8x1VL",
[](const GemmArgs &args, const Requantize32 &) { return args._ci->has_sve() && args._Ksize<=64 && !args._indirect_input; },
- nullptr,
+ [](const GemmArgs &args, const Requantize32 &) { return !(args._ci->has_svei8mm() || args._ci->has_i8mm()); },
[](const GemmArgs &args, const Requantize32 &qp) { return new GemmHybridQuantized<cls_sve_smallK_hybrid_u8u32_dot_8x1VL, uint8_t, uint8_t>(args, qp); }
},
GemmImplementation<uint8_t, uint8_t, Requantize32>::with_estimate(
@@ -130,14 +130,14 @@ GemmImplementation<uint8_t, uint8_t, Requantize32>::with_estimate(
GemmMethod::GEMM_HYBRID_QUANTIZED,
"a64_smallK_hybrid_u8u32_dot_8x4",
[](const GemmArgs &args, const Requantize32 &) { return args._ci->has_dotprod() && (args._Nsize % 4 == 0) && (args._Ksize<=32) && !args._indirect_input; },
- nullptr,
+ [](const GemmArgs &args, const Requantize32 &) { return !(args._ci->has_svei8mm() || args._ci->has_i8mm()); },
[](const GemmArgs &args, const Requantize32 &qp) { return new GemmHybridQuantized<cls_a64_smallK_hybrid_u8u32_dot_8x4, uint8_t, uint8_t>(args, qp); }
},
{
GemmMethod::GEMM_HYBRID_QUANTIZED,
"a64_smallK_hybrid_u8u32_dot_6x4",
[](const GemmArgs &args, const Requantize32 &) { return args._ci->has_dotprod() && (args._Nsize % 4 == 0) && (args._Ksize>32) && (args._Ksize<=64) && !args._indirect_input; },
- nullptr,
+ [](const GemmArgs &args, const Requantize32 &) { return !(args._ci->has_svei8mm() || args._ci->has_i8mm()); },
[](const GemmArgs &args, const Requantize32 &qp) { return new GemmHybridQuantized<cls_a64_smallK_hybrid_u8u32_dot_6x4, uint8_t, uint8_t>(args, qp); }
},
{