aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/CL
diff options
context:
space:
mode:
authorGian Marco Iodice <gianmarco.iodice@arm.com>2023-04-19 16:29:26 +0100
committerGian Marco Iodice <gianmarco.iodice@arm.com>2023-04-26 13:54:32 +0000
commitf16eed979ecaa234b308c8eb145c5f9512673a54 (patch)
tree68c730ab2dc3aede9501849f2ee7fcb6a230de1c /src/runtime/CL
parent905a3c1a8883d988edf5bdc749844a4565fe5623 (diff)
downloadComputeLibrary-f16eed979ecaa234b308c8eb145c5f9512673a54.tar.gz
Change fp16 GeMM heuristic for Arm® Mali™-G77
- Replace existing heuristic with look-up tables - Expected performance improvement is between 5-15% on various models Signed-off-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Change-Id: Ie26ddf66895ede131aa06fde7b200ef94d2dd467 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9472 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Viet-Hoa Do <viet-hoa.do@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/CL')
-rw-r--r--src/runtime/CL/gemm/CLGEMMDefaultTypeValhall.cpp98
1 files changed, 4 insertions, 94 deletions
diff --git a/src/runtime/CL/gemm/CLGEMMDefaultTypeValhall.cpp b/src/runtime/CL/gemm/CLGEMMDefaultTypeValhall.cpp
index 4c7daf916e..29d3177424 100644
--- a/src/runtime/CL/gemm/CLGEMMDefaultTypeValhall.cpp
+++ b/src/runtime/CL/gemm/CLGEMMDefaultTypeValhall.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2022 Arm Limited.
+ * Copyright (c) 2020-2023 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -138,105 +138,15 @@ CLGEMMKernelType CLGEMMDefaultTypeValhall::default_f16(unsigned int m, unsigned
CLGEMMKernelType CLGEMMDefaultTypeValhall::g77_f16(unsigned int m, unsigned int n, unsigned int k, unsigned int b, bool is_rhs_constant)
{
+ ARM_COMPUTE_UNUSED(m, n, k, b);
+
if(!is_rhs_constant)
{
return CLGEMMKernelType::NATIVE;
}
-
- if(m == 1)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
-
- const float r_mn = static_cast<float>(m) / static_cast<float>(n);
- const float r_mk = static_cast<float>(m) / static_cast<float>(k);
- const float r_nk = static_cast<float>(n) / static_cast<float>(k);
- const float workload = (static_cast<float>(m) * static_cast<float>(n) * static_cast<float>(b)) / 20.0f;
-
- if(r_mk <= 0.6817956566810608)
- {
- if(workload <= 801.6000061035156)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- else
- {
- if(r_mn <= 0.0839829258620739)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- else
- {
- if(r_mk <= 0.24917218834161758)
- {
- return CLGEMMKernelType::RESHAPED;
- }
- else
- {
- if(workload <= 2551.75)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- else
- {
- if(workload <= 5061.574951171875)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- else
- {
- return CLGEMMKernelType::RESHAPED;
- }
- }
- }
- }
- }
- }
else
{
- if(r_mk <= 4.849947690963745)
- {
- if(workload <= 17618.4501953125)
- {
- if(workload <= 5224.699951171875)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- else
- {
- if(r_nk <= 0.7933054566383362)
- {
- return CLGEMMKernelType::RESHAPED;
- }
- else
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- }
- }
- else
- {
- if(workload <= 20275.2001953125)
- {
- return CLGEMMKernelType::RESHAPED;
- }
- else
- {
- if(r_mk <= 3.07421875)
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
- else
- {
- return CLGEMMKernelType::RESHAPED;
- }
- }
- }
- }
- else
- {
- return CLGEMMKernelType::RESHAPED_ONLY_RHS;
- }
+ return CLGEMMKernelType::RESHAPED_ONLY_RHS;
}
}