diff options
author | Gian Marco Iodice <gianmarco.iodice@arm.com> | 2018-06-04 18:08:48 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:52:54 +0000 |
commit | 513fe2e80512091c22af3204053dbd53f8ccf12b (patch) | |
tree | a900c6caabb07a96ec9fb8bde61d3225511f8698 /src/runtime/CL/functions/CLGEMM.cpp | |
parent | 7d920f4ce6e9b7b0f6d03fcac2c9598122de5404 (diff) | |
download | ComputeLibrary-513fe2e80512091c22af3204053dbd53f8ccf12b.tar.gz |
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 <pablo.tello@arm.com>
Tested-by: Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/CL/functions/CLGEMM.cpp')
-rw-r--r-- | src/runtime/CL/functions/CLGEMM.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
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 { |