ik_llama_opt/ggml/src/vulkan-shaders
Guy Barel 64109a4d60
vulkan : add IQ4_KS and IQ4_KT support (#2332)
* vulkan : use ggml_row_size for types with a per-row scale

Types that declare a row_meta_size store a per-row scale ahead of the row's
blocks, so a row is not ggml_type_size()*ne/ggml_blck_size() bytes. This
under-sized src0 in the four quantized mat-mul paths, and made
ggml_vk_dim01_contiguous() report such a tensor non-contiguous, which in turn
made supports_op reject it. No change for row_meta_size == 0.

* vulkan : add IQ4_KS and IQ4_KT support

A row of these types is one f32 scale followed by the row's blocks, so rows are
not a whole number of blocks apart and the usual block-indexed addressing does
not work. They are read through a uint32_t alias of binding 0 and addressed by
word; types.comp holds the alias, the stride and the decode, so each shader only
expresses its own addressing and no push constant layouts change.

Covers to_fp16, get_rows, mul_mat_vec (incl. MUL_MAT_ID) and scalar + coopmat1
mul_mm. get_rows addresses by row rather than through nb01/02/03, which cannot
express a per-row scale, so supports_op accepts only a contiguous src0 for these
two types. coopmat2 is excluded because coopMatLoadTensorNV addresses through a
uniform grid tensor layout, which cannot describe the row prefix; the two
mat-mat getters return nullptr there and the callers fall back to F16.

* tests : add IQ4_KS/IQ4_KT decode validation

Re-implements in C++ the indexing each of the four shader families uses and
diffs it against ggml's to_float over several row and block counts. CPU only: it
validates the format transcription, not the compiled shaders.
2026-08-24 18:20:35 +02:00
..
CMakeLists.txt Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
acc.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
add.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
argmax.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
argsort.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
clamp.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
concat.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
contig_copy.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
conv2d_dw.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
conv_transpose_1d.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
copy.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
copy_from_quant.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
copy_to_quant.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
cos.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
count_equal.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_f32.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_funcs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_funcs_cm2.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_head.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_iq1_m.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq1_s.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq2_s.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq2_xs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq2_xxs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq3_s.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq3_xxs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq4_ks.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
dequant_iq4_kt.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
dequant_iq4_nl.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_iq4_xs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_q2_k.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q3_k.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q4_0.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q4_1.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q4_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_q5_0.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q5_1.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q5_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
dequant_q6_k.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
dequant_q8_0.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
diag_mask_inf.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
div.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
flash_attn.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
flash_attn_base.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
flash_attn_cm1.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
flash_attn_cm2.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
flash_attn_split_k_reduce.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
fused_mul_gelu.comp Vulkan: add GGML_OP_FUSED_MUL_UNARY (#580) 2025-07-03 18:03:23 +02:00
fused_mul_relu.comp Vulkan: add GGML_OP_FUSED_MUL_UNARY (#580) 2025-07-03 18:03:23 +02:00
fused_mul_silu.comp Vulkan: add GGML_OP_FUSED_MUL_UNARY (#580) 2025-07-03 18:03:23 +02:00
fused_rms_norm.comp Vulkan: fused rms norm (#577) 2025-07-03 15:36:52 +02:00
geglu.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
geglu_erf.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
geglu_quick.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
gelu.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
gelu_erf.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
gelu_quick.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
generic_binary_head.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
generic_head.comp Merge mainline llama.cpp (#3) 2024-07-27 07:55:01 +02:00
generic_unary_head.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
get_rows.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
get_rows_iq4_ks.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
get_rows_iq4_kt.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
get_rows_quant.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
glu_head.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
glu_main.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
group_norm.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
im2col.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
l2_norm.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
leaky_relu.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
mul.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_split_k_reduce.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_base.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq1_m.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq1_s.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq2_s.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq2_xs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq2_xxs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq3_s.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq3_xxs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_iq4_ks.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
mul_mat_vec_iq4_kt.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
mul_mat_vec_nc.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_p021.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_q2_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_q3_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_q4_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_q5_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mat_vec_q6_k.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mm.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
mul_mm_cm2.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
mul_mmq.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
mul_mmq_funcs.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
multi_add.comp Adding forgotten file (#583) 2025-07-04 08:39:04 +02:00
norm.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
opt_step_adamw.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
pad.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
pool2d.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
quantize_q8_1.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
reglu.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
relu.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
repeat.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
repeat_back.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
rms_norm.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
rms_norm_back.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
roll.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
rope_head.comp Port of Qwen3-VL support from mainline (#883) 2025-11-04 19:20:54 +02:00
rope_multi.comp Port of Qwen3-VL support from mainline (#883) 2025-11-04 19:20:54 +02:00
rope_neox.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
rope_norm.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
rope_vision.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
scale.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
sigmoid.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
silu.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
silu_back.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
sin.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
soft_max.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
soft_max_back.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
square.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
sub.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
sum_rows.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
swiglu.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
tanh.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
test_bfloat16_support.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
test_coopmat2_support.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
test_coopmat_support.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
test_integer_dot_support.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
timestep_embedding.comp Merge mainline - Aug 12 2024 (#17) 2024-08-12 15:14:32 +02:00
types.comp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
upscale.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00
vulkan-shaders-gen.cpp vulkan : add IQ4_KS and IQ4_KT support (#2332) 2026-08-24 18:20:35 +02:00
wkv6.comp Merge vulkan code from mainline up to commit of 6/28/2025 (#563) 2025-07-02 08:49:42 +02:00
wkv7.comp Vulkan: a fresh start (#608) 2025-07-15 08:03:13 +02:00