From f16eed979ecaa234b308c8eb145c5f9512673a54 Mon Sep 17 00:00:00 2001 From: Gian Marco Iodice Date: Wed, 19 Apr 2023 16:29:26 +0100 Subject: =?UTF-8?q?Change=20fp16=20GeMM=20heuristic=20for=20Arm=C2=AE=20Ma?= =?UTF-8?q?li=E2=84=A2-G77?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace existing heuristic with look-up tables - Expected performance improvement is between 5-15% on various models Signed-off-by: Gian Marco Iodice Change-Id: Ie26ddf66895ede131aa06fde7b200ef94d2dd467 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9472 Tested-by: Arm Jenkins Reviewed-by: Viet-Hoa Do Comments-Addressed: Arm Jenkins Benchmark: Arm Jenkins --- src/runtime/CL/gemm/CLGEMMDefaultTypeValhall.cpp | 98 +----------------------- 1 file changed, 4 insertions(+), 94 deletions(-) (limited to 'src/runtime') 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(m) / static_cast(n); - const float r_mk = static_cast(m) / static_cast(k); - const float r_nk = static_cast(n) / static_cast(k); - const float workload = (static_cast(m) * static_cast(n) * static_cast(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; } } -- cgit v1.2.1