char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
07fc97716
char/aliceai-t5-moe
1find_package ( OpenCL REQUIRED ) 2find_package ( Python3 REQUIRED ) 3 4set ( TARGET_NAME ggml-opencl ) 5 6ggml_add_backend_library ( $ { TARGET_NAME } 7ggml-opencl.cpp 8cl-program-cache.cpp 9cl-program-cache.h 10../../include/ggml-opencl.h ) 11target_link_libraries ( $ { TARGET_NAME } PRIVATE ${ OpenCL_LIBRARIES }) 12target_include_directories ( $ { TARGET_NAME } PRIVATE ${ OpenCL_INCLUDE_DIRS }) 13 14if ( GGML_OPENCL_PROFILING) 15message ( STATUS "OpenCL profiling enabled (increases CPU overhead)" ) 16add_compile_definitions ( GGML_OPENCL_PROFILING ) 17endif () 18 19add_compile_definitions ( GGML_OPENCL_SOA_Q ) 20add_compile_definitions ( GGML_OPENCL_TARGET_VERSION= ${ GGML_OPENCL_TARGET_VERSION }) 21 22if ( GGML_OPENCL_USE_ADRENO_KERNELS) 23message ( STATUS "OpenCL will use matmul kernels optimized for Adreno" ) 24add_compile_definitions ( GGML_OPENCL_USE_ADRENO_KERNELS ) 25endif () 26 27if ( GGML_OPENCL_EMBED_KERNELS) 28add_compile_definitions ( GGML_OPENCL_EMBED_KERNELS ) 29 30set ( EMBED_KERNEL_SCRIPT " ${ CMAKE_CURRENT_SOURCE_DIR } /kernels/embed_kernel.py" ) 31file ( MAKE_DIRECTORY " ${ CMAKE_CURRENT_BINARY_DIR } /autogenerated" ) 32 33target_include_directories ( $ { TARGET_NAME } PRIVATE " ${ CMAKE_CURRENT_BINARY_DIR } /autogenerated" ) 34endif () 35 36if ( GGML_OPENCL_USE_ADRENO_BIN_KERNELS) 37message ( STATUS "OpenCL will use precompiled binary kernels for Adreno (improved performance on some platforms)" ) 38add_compile_definitions ( GGML_OPENCL_USE_ADRENO_BIN_KERNELS ) 39endif () 40 41function ( ggml_opencl_add_kernel KNAME ) 42set ( KERN_HDR ${ CMAKE_CURRENT_BINARY_DIR } /autogenerated/ ${ KNAME } .cl.h ) 43set ( KERN_SRC ${ CMAKE_CURRENT_SOURCE_DIR } /kernels/ ${ KNAME } .cl ) 44 45if ( GGML_OPENCL_EMBED_KERNELS) 46message ( STATUS "opencl: embedding kernel ${ KNAME } " ) 47 48# Python must be accessible from command line 49add_custom_command ( 50OUTPUT ${ KERN_HDR } 51COMMAND ${ Python3_EXECUTABLE } ${ EMBED_KERNEL_SCRIPT } ${ KERN_SRC } ${ KERN_HDR } 52DEPENDS ${ KERN_SRC } ${ EMBED_KERNEL_SCRIPT } 53COMMENT "Generate ${ KERN_HDR } " 54) 55 56target_sources ( $ { TARGET_NAME } PRIVATE ${ KERN_HDR }) 57else () 58message ( STATUS "opencl: adding kernel ${ KNAME } " ) 59configure_file ( $ { KERN_SRC } ${ CMAKE_RUNTIME_OUTPUT_DIRECTORY } / ${ KNAME } .cl COPYONLY ) 60endif () 61endfunction () 62 63set ( GGML_OPENCL_KERNELS 64add 65add_id 66moe_add_id_glu 67argsort 68tri 69fill 70clamp 71cpy 72cvt 73diag_mask_inf 74diag 75div 76gelu 77get_rows 78glu 79group_norm 80solve_tri 81im2col_f32 82im2col_f16 83mean 84mul_mv_f16_f16 85mul_mv_f16_f32_1row 86mul_mv_f16_f32_l4 87mul_mv_f16_f32 88mul_mv_f16_f32_mrow 89mul_mv_f32_f32 90mul_mv_q1_0_f32 91mul_mv_q1_0_f32_flat 92mul_mv_q4_0_f32 93mul_mv_q4_0_f32_v 94mul_mv_q4_0_f32_8x_flat 95mul_mv_q4_0_f32_1d_8x_flat 96mul_mv_q4_0_f32_1d_16x_flat 97mul_mv_q4_1_f32 98mul_mv_q4_1_f32_flat 99mul_mv_q4_k_f32 100mul_mv_q4_k_f32_flat 101mul_mv_q5_0_f32 102mul_mv_q5_0_f32_flat 103mul_mv_q5_1_f32 104mul_mv_q5_1_f32_flat 105mul_mv_q5_k_f32 106mul_mv_q5_k_f32_flat 107mul_mv_q6_k_f32 108mul_mv_q6_k_f32_flat 109mul_mv_q8_0_f32 110mul_mv_q8_0_f32_flat 111mul_mv_iq4_nl_f32 112mul_mv_iq4_nl_f32_flat 113mul_mv_mxfp4_f32 114mul_mv_mxfp4_f32_flat 115mul_mv_id_q4_0_f32_8x_flat 116mul_mv_id_q8_0_f32 117mul_mv_id_q8_0_f32_flat 118mul_mv_id_mxfp4_f32 119mul_mv_id_mxfp4_f32_flat 120gemm_moe_q4_0_f32_ns 121gemm_moe_q4_0_q8_1_dp4a 122gemv_moe_q4_0_f32_ns 123gemm_moe_q8_0_f32_ns 124gemm_moe_q4_1_f32_ns 125gemv_moe_q4_1_f32_ns 126gemm_moe_q5_0_f32_ns 127gemv_moe_q5_0_f32_ns 128gemm_moe_q5_1_f32_ns 129gemv_moe_q5_1_f32_ns 130gemm_moe_q4_k_f32_ns 131gemm_moe_q4_k_q8_1_dp4a 132gemm_moe_q6_k_q8_1_dp4a 133gemm_moe_q8_1_dp4a 134moe_reorder_quant_a_q8_1 135gemm_noshuffle_q4_k_q8_1_dp4a 136gemm_noshuffle_q5_k_q8_1_dp4a 137gemm_noshuffle_q6_k_q8_1_dp4a 138gemm_noshuffle_q8_0_q8_1_dp4a 139gemm_noshuffle_q5_0_q8_1_dp4a 140gemm_noshuffle_iq4_nl_q8_1_dp4a 141gemm_noshuffle_q4_0_q8_1_dp4a 142quant_a_q8_1 143gemv_moe_q4_k_f32_ns 144gemm_moe_q5_k_f32_ns 145gemv_moe_q5_k_f32_ns 146gemm_moe_q6_k_f32_ns 147gemv_moe_q6_k_f32_ns 148gemm_moe_mxfp4_f32 149gemv_moe_mxfp4_f32 150gemm_moe_mxfp4_f32_ns 151gemm_moe_mxfp4_q8_1_dp4a 152gemv_moe_mxfp4_f32_ns 153moe_reorder_b 154moe_combine 155moe_sort_by_expert 156mul_mm_f32_f32_l4_lm 157mul_mm_f16_f32_l4_lm 158mul_mm_q1_0_f32_l4_lm 159mul_mm_q4_0_f32_l4_lm 160mul_mm_q4_1_f32_l4_lm 161mul_mm_q5_0_f32_l4_lm 162mul_mm_q5_1_f32_l4_lm 163mul_mm_q8_0_f32_l4_lm 164mul_mm_iq4_nl_f32_l4_lm 165mul_mm_q4_k_f32_l4_lm 166mul_mm_q5_k_f32_l4_lm 167mul_mm_q6_k_f32_l4_lm 168gemv_noshuffle_q1_0_f32 169gemm_noshuffle_q1_0_f32 170gemv_noshuffle_q4_0_f32 171gemv_noshuffle_q4_0_f32_spec 172gemm_noshuffle_q4_0_f32 173gemv_noshuffle_q4_0_f32_32b_trans 174gemv_noshuffle_q4_1_f32 175gemm_noshuffle_q4_1_f32 176gemv_noshuffle_q5_0_f32 177gemm_noshuffle_q5_0_f32 178gemv_noshuffle_q5_1_f32 179gemm_noshuffle_q5_1_f32 180gemv_noshuffle_iq4_nl_f32 181gemm_noshuffle_iq4_nl_f32 182gemv_noshuffle_q8_0_f32 183gemm_noshuffle_q8_0_f32 184gemv_noshuffle_q4_k_f32 185gemv_noshuffle_q4_k_f32_o4 186gemv_noshuffle_q4_k_f32_tiled 187gemm_noshuffle_q4_k_f32 188gemv_noshuffle_q4_k_f32_32b_trans 189gemv_noshuffle_q6_k_f32 190gemv_noshuffle_q6_k_f32_o4 191gemv_noshuffle_q6_k_f32_tiled 192gemm_noshuffle_q6_k_f32 193gemm_noshuffle_q6_k_f32_tiled 194gemv_noshuffle_q5_k_f32 195gemm_noshuffle_q5_k_f32 196mul 197neg 198norm 199relu 200l2_norm 201rms_norm 202rope 203scale 204set_rows 205sigmoid 206silu 207softmax_4_f32 208softmax_4_f16 209softmax_f32 210softmax_f16 211sqr 212sqrt 213ssm_conv 214ssm_scan 215gated_delta_net 216sub 217sum_rows 218cumsum 219transpose 220concat 221tsembd 222upscale 223tanh 224exp 225expm1 226abs 227unary_ext 228softplus 229pad 230repeat 231mul_mat_f16_f32 232mul_mm_f16_f32_kq_kqv 233conv2d 234conv2d_f16_f32 235flash_attn_pre_f16 236flash_attn_f32_f16 237flash_attn_f32_q8_0 238flash_attn_f32_q4_0 239flash_attn_f16 240flash_attn_f32 241) 242 243if ( GGML_OPENCL_USE_ADRENO_KERNELS) 244list ( APPEND GGML_OPENCL_KERNELS gemm_xmem_f16_f32_os8 sdpa_xmem_f32_f16_os8 ) 245endif () 246 247foreach ( K${ GGML_OPENCL_KERNELS }) 248ggml_opencl_add_kernel ( $ { K }) 249endforeach ()