Automatically select between mlgo (prioritized) and default heuristics for gemm kernel type
| 67 | } |
| 68 | //Automatically select between mlgo (prioritized) and default heuristics for gemm kernel type |
| 69 | inline CLGEMMKernelType |
| 70 | auto_select_gemm_kernel(auto_heuristics::CommonQuery query, bool reshape_b_only_on_first_run, bool constant_weights) |
| 71 | { |
| 72 | if (!constant_weights) |
| 73 | { |
| 74 | return CLGEMMKernelType::NATIVE; |
| 75 | } |
| 76 | |
| 77 | auto gemm_kernel = auto_heuristics::select_mlgo_gemm_kernel(query, reshape_b_only_on_first_run); |
| 78 | if (bool(gemm_kernel)) |
| 79 | { |
| 80 | if (validate_gemm_kernel(gemm_kernel.gemm_type)) |
| 81 | { |
| 82 | ARM_COMPUTE_LOG_INFO_MSG_WITH_FORMAT_CORE("Use gemm kernel from mlgo heuristics: %s.", |
| 83 | to_string(gemm_kernel.gemm_type).c_str()); |
| 84 | return gemm_kernel.gemm_type; |
| 85 | } |
| 86 | } |
| 87 | gemm_kernel = auto_heuristics::select_default_gemm_kernel(query, reshape_b_only_on_first_run); |
| 88 | ARM_COMPUTE_LOG_INFO_MSG_WITH_FORMAT_CORE("Use gemm kernel from default heuristics: %s.", |
| 89 | to_string(gemm_kernel.gemm_type).c_str()); |
| 90 | return gemm_kernel.gemm_type; |
| 91 | } |
| 92 | // Validate lhs_info and rhs_info for reshaped only rhs kernel |
| 93 | inline bool validate_lhs_rhs_info_reshaped_only_rhs(const GEMMLHSMatrixInfo &lhs_info, |
| 94 | const GEMMRHSMatrixInfo &rhs_info, |
no test coverage detected