From 513fe2e80512091c22af3204053dbd53f8ccf12b Mon Sep 17 00:00:00 2001 From: Gian Marco Iodice Date: Mon, 4 Jun 2018 18:08:48 +0100 Subject: COMPMID-1251 - Update GEMM's heuristic selection on OpenCL Change-Id: I915461d3216ee8b181a592a89143ee8c6bb25661 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/134054 Reviewed-by: Pablo Tello Tested-by: Jenkins --- src/runtime/CL/functions/CLGEMM.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/runtime/CL/functions/CLGEMM.cpp') diff --git a/src/runtime/CL/functions/CLGEMM.cpp b/src/runtime/CL/functions/CLGEMM.cpp index f81da6c0a5..7f37520f10 100644 --- a/src/runtime/CL/functions/CLGEMM.cpp +++ b/src/runtime/CL/functions/CLGEMM.cpp @@ -48,13 +48,17 @@ inline bool is_interleaved_transposed(int m, int n, int k, DataType data_type, b { bool flag = true; - if(gpu_target_is_in(gpu_target, GPUTarget::G71, GPUTarget::G72, GPUTarget::G51, GPUTarget::G51BIG, GPUTarget::G51LIT, GPUTarget::TNOX)) + if(gpu_target_is_in(gpu_target, GPUTarget::G71, GPUTarget::G72)) { // COMPMID-852 if(k > 256 && m > 4 && is_data_type_float(data_type) && reshape_b_only_on_first_run) { - const float scale = k < 1024 ? 2.0f : 2.5f; - flag = (scale * n) > ((1.66f * n) + 38.4f); + constexpr float alpha = 3.2f; + constexpr float fact0 = 1.51f; + constexpr float fact1 = 1.66f; + constexpr float ops = 12.0f; + const float scale = k > 1024 ? 1.07f : 1.0f; + flag = alpha + ((n * fact0) / ops) < ((fact1 * n * scale) / ops); } else { -- cgit v1.2.1