@@ -402,8 +402,8 @@ struct ggml_backend_opencl_context {
402402 cl_kernel kernel_relu;
403403 cl_kernel kernel_sigmoid_f32, kernel_sigmoid_f16;
404404 cl_kernel kernel_clamp;
405- cl_kernel kernel_geglu, kernel_reglu, kernel_swiglu,
406- kernel_geglu_f16, kernel_reglu_f16, kernel_swiglu_f16;
405+ cl_kernel kernel_geglu, kernel_reglu, kernel_swiglu, kernel_geglu_erf, kernel_geglu_quick,
406+ kernel_geglu_f16, kernel_reglu_f16, kernel_swiglu_f16, kernel_geglu_erf_f16, kernel_geglu_quick_f16 ;
407407 cl_kernel kernel_norm;
408408 cl_kernel kernel_rms_norm;
409409 cl_kernel kernel_group_norm;
@@ -753,12 +753,16 @@ static void load_cl_kernels(ggml_backend_opencl_context *backend_ctx, ggml_cl_ve
753753 backend_ctx->program_glu =
754754 build_program_from_source (backend_ctx->context , backend_ctx->device , kernel_src.c_str (), compile_opts);
755755
756- CL_CHECK ((backend_ctx->kernel_geglu = clCreateKernel (backend_ctx->program_glu , " kernel_geglu" , &err), err));
757- CL_CHECK ((backend_ctx->kernel_reglu = clCreateKernel (backend_ctx->program_glu , " kernel_reglu" , &err), err));
758- CL_CHECK ((backend_ctx->kernel_swiglu = clCreateKernel (backend_ctx->program_glu , " kernel_swiglu" , &err), err));
759- CL_CHECK ((backend_ctx->kernel_geglu_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_geglu_f16" , &err), err));
760- CL_CHECK ((backend_ctx->kernel_reglu_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_reglu_f16" , &err), err));
761- CL_CHECK ((backend_ctx->kernel_swiglu_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_swiglu_f16" , &err), err));
756+ CL_CHECK ((backend_ctx->kernel_geglu = clCreateKernel (backend_ctx->program_glu , " kernel_geglu" , &err), err));
757+ CL_CHECK ((backend_ctx->kernel_reglu = clCreateKernel (backend_ctx->program_glu , " kernel_reglu" , &err), err));
758+ CL_CHECK ((backend_ctx->kernel_swiglu = clCreateKernel (backend_ctx->program_glu , " kernel_swiglu" , &err), err));
759+ CL_CHECK ((backend_ctx->kernel_geglu_erf = clCreateKernel (backend_ctx->program_glu , " kernel_geglu_erf" , &err), err));
760+ CL_CHECK ((backend_ctx->kernel_geglu_quick = clCreateKernel (backend_ctx->program_glu , " kernel_geglu_quick" , &err), err));
761+ CL_CHECK ((backend_ctx->kernel_geglu_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_geglu_f16" , &err), err));
762+ CL_CHECK ((backend_ctx->kernel_reglu_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_reglu_f16" , &err), err));
763+ CL_CHECK ((backend_ctx->kernel_swiglu_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_swiglu_f16" , &err), err));
764+ CL_CHECK ((backend_ctx->kernel_geglu_erf_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_geglu_erf_f16" , &err), err));
765+ CL_CHECK ((backend_ctx->kernel_geglu_quick_f16 = clCreateKernel (backend_ctx->program_glu , " kernel_geglu_quick_f16" , &err), err));
762766 GGML_LOG_CONT (" ." );
763767 }
764768
@@ -6217,6 +6221,20 @@ static void ggml_cl_glu(ggml_backend_t backend, const ggml_tensor * src0, const
62176221 kernel = backend_ctx->kernel_swiglu_f16 ;
62186222 }
62196223 break ;
6224+ case GGML_GLU_OP_GEGLU_ERF:
6225+ if (dst->type == GGML_TYPE_F32) {
6226+ kernel = backend_ctx->kernel_geglu_erf ;
6227+ } else {
6228+ kernel = backend_ctx->kernel_geglu_erf_f16 ;
6229+ }
6230+ break ;
6231+ case GGML_GLU_OP_GEGLU_QUICK:
6232+ if (dst->type == GGML_TYPE_F32) {
6233+ kernel = backend_ctx->kernel_geglu_quick ;
6234+ } else {
6235+ kernel = backend_ctx->kernel_geglu_quick_f16 ;
6236+ }
6237+ break ;
62206238 default :
62216239 GGML_ABORT (" Unsupported glu op" );
62226240 }
0 commit comments