diff options
-rw-r--r-- | src/runtime/CL/gemm/CLGEMMKernelSelectionBifrost.cpp | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/src/runtime/CL/gemm/CLGEMMKernelSelectionBifrost.cpp b/src/runtime/CL/gemm/CLGEMMKernelSelectionBifrost.cpp index 48f38cac55..7b8eee975e 100644 --- a/src/runtime/CL/gemm/CLGEMMKernelSelectionBifrost.cpp +++ b/src/runtime/CL/gemm/CLGEMMKernelSelectionBifrost.cpp @@ -184,32 +184,59 @@ CLGEMMKernelType CLGEMMKernelSelectionBifrost::g76_f32(unsigned int m, unsigned { ARM_COMPUTE_UNUSED(b); - CLGEMMKernelType gemm_type = CLGEMMKernelType::NATIVE_V1; + if(!is_rhs_constant) + { + return CLGEMMKernelType::NATIVE; + } - if(is_rhs_constant) + if(m == 1) { - if((m > 1) && (n < 16)) + return CLGEMMKernelType::RESHAPED_ONLY_RHS; + } + + if(k <= 496) + { + if(n <= 544) { - gemm_type = CLGEMMKernelType::RESHAPED; + return CLGEMMKernelType::RESHAPED_ONLY_RHS; } - else if(m == 1) + else { - gemm_type = CLGEMMKernelType::RESHAPED_ONLY_RHS; + return CLGEMMKernelType::RESHAPED; } - else + } + else + { + if(k <= 588) { - if((k > 256) && (m > 4)) + if(k <= 552) { - gemm_type = CLGEMMKernelType::RESHAPED; + if(m <= 148) + { + return CLGEMMKernelType::RESHAPED_ONLY_RHS; + } + else + { + if(m <= 278) + { + return CLGEMMKernelType::RESHAPED; + } + else + { + return CLGEMMKernelType::RESHAPED_ONLY_RHS; + } + } } else { - gemm_type = CLGEMMKernelType::RESHAPED_ONLY_RHS; + return CLGEMMKernelType::RESHAPED_ONLY_RHS; } } + else + { + return CLGEMMKernelType::RESHAPED; + } } - - return gemm_type; } CLGEMMKernelType CLGEMMKernelSelectionBifrost::g71_f16(unsigned int m, unsigned int n, unsigned int k, unsigned int b, bool is_rhs_constant) |