Skip to content

Commit a8b6189

Browse files
committed
opencl: refine condition for kqv mm
1 parent 7d77f07 commit a8b6189

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

ggml/src/ggml-opencl/ggml-opencl.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6895,9 +6895,23 @@ static void ggml_cl_mul_mat(ggml_backend_t backend, const ggml_tensor * src0, co
68956895
cl_context context = backend_ctx->context;
68966896

68976897
if(src0t == GGML_TYPE_F16 && src1t == GGML_TYPE_F32){
6898-
if (ne01 >= 64 && ne1 >= 32 && ne00 >= 16 && (ne12 % ne02) == 0){
6899-
ggml_cl_mul_mat_kq_kqv_adreno(backend, src0, src1, dst);
6900-
return;
6898+
if (ne01 >= 64 && ne1 >= 32 && ne00 >= 16 && (ne12 % ne02) == 0) {
6899+
// For KQ
6900+
if (ggml_is_permuted(src0) && ggml_is_permuted(src1) &&
6901+
nb00 <= nb02 &&
6902+
nb02 <= nb01 &&
6903+
nb01 <= nb03 &&
6904+
nb10 <= nb12 &&
6905+
nb12 <= nb11 &&
6906+
nb11 <= nb13) {
6907+
ggml_cl_mul_mat_kq_kqv_adreno(backend, src0, src1, dst);
6908+
return;
6909+
}
6910+
// For KQV
6911+
if (!ggml_is_contiguous(src0) && ggml_is_contiguous(src1)) {
6912+
ggml_cl_mul_mat_kq_kqv_adreno(backend, src0, src1, dst);
6913+
return;
6914+
}
69016915
}
69026916
}
69036917

0 commit comments

Comments
 (0)