whisper.cpp/ggml/src
Pascal f74102e4f8
cuda: GET_ROWS quants (llama/25962)
* cuda: add k-quant support to GET_ROWS

Device-side embedding lookups require GET_ROWS to handle the k-quants
used by common GGUF recipes (Q4_K_M stores token_embd as q6_K). Without
it the backend rejects the op and the scheduler falls back to the host,
copying the full embedding matrix back on every token in single-device
graphs.

Factor the super-block dequantizers out of the dequantize_block kernels
in convert.cu into shared device functions in dequantize.cuh and reuse
them from a new k_get_rows_kq kernel : one thread block dequantizes one
(dst row, super-block) pair with the existing thread layouts, 32 threads
for q4_K and 64 for the other k-quants.

Covers q2_K to q6_K in get_rows_cuda and supports_op. i-quants are left
as a TODO.

* cuda: add i-quant support to GET_ROWS

Extends the shared super-block dequantizers to the nine i-quants and
reuses them from k_get_rows_kq with the 32-thread layout of the matching
convert.cu kernels. supports_op gates the k-quant and i-quant path on
ne0 being a multiple of QK_K, which iq4_nl does not guarantee on its
own (QK4_NL sub-blocks). mxfp4 is left as a TODO.

* cuda: add mxfp4 support to GET_ROWS

Moves the mxfp4 dequantizer into the shared super-block helpers and
reuses it from k_get_rows_kq with the 32-thread layout of the matching
convert.cu kernel. mxfp4 joins the ne0 % QK_K gate in supports_op since
its 32-value sub-blocks do not guarantee QK_K-aligned rows on their own.
This closes GET_ROWS type coverage on CUDA: every quantized GGML type
now takes the direct device path.

* cuda: gate the GET_ROWS row size only for 32-value sub-block types

Address review from @pwilkin: the i-quant commit replaced the return
shared by the whole supported type cascade, so f16/f32/bf16/i32 and the
legacy quants also inherited the ne0 % QK_K == 0 gate and any row size
that is not a multiple of 256 fell back to the scheduler. Split the
cascade: unconditional support is restored everywhere, the gate stays
only on iq4_nl and mxfp4 whose 32-value sub-blocks do not guarantee the
QK_K super-blocks the kernel iterates on.
2026-07-30 16:31:47 +03:00
..
ggml-blas ggml-blas: default hadamard mul_mat to cpu routine (llama/25710) 2026-07-30 16:31:44 +03:00
ggml-cann vulkan: add get/set tensor 2d functions (llama/22514) 2026-05-01 13:07:35 +03:00
ggml-cpu kleidiai : warn once when a weight type has no KleidiAI kernel (llama/25701) 2026-07-30 16:31:46 +03:00
ggml-cuda cuda: GET_ROWS quants (llama/25962) 2026-07-30 16:31:47 +03:00
ggml-et ggml-et: Initial ET backend (llama/24179) 2026-07-30 16:31:36 +03:00
ggml-hexagon hexagon: check tensor type when reusing descriptors (llama/25968) 2026-07-30 16:31:46 +03:00
ggml-hip ggml-hip: enable -funsafe-math-optimizations (llama/24668) 2026-07-10 13:06:42 +03:00
ggml-metal metal: fuse snake activation (mul, sin, sqr, mul, add) (llama/25459) 2026-07-30 16:31:41 +03:00
ggml-musa ggml-cuda: native bf16 flash attention for vec kernel (llama/20525) 2026-03-29 15:04:36 +03:00
ggml-opencl opencl: Support broadcast for Adreno MUL_MAT and honor `view_offs` for Adreno Q8_0 MUL_MAT for llama-server multi-stream (llama/25910) 2026-07-30 16:31:45 +03:00
ggml-openvino ggml-openvino: Add GGML_BACKEND_DL_IMPL invocation for OpenVINO backend (llama/25795) 2026-07-30 16:31:46 +03:00
ggml-rpc rpc : keep last_graph_uid in the device context (llama/23273) 2026-05-25 12:26:07 +03:00
ggml-sycl sycl: fix row calculation when K_QUANTS_PER_ITERATION is 1 (llama/25690) 2026-07-30 16:31:44 +03:00
ggml-virtgpu ggml-virtgpu : include missing mutex header (llama/22810) 2026-05-14 21:26:48 +03:00
ggml-vulkan vulkan: Refactor vk_queue to use per-instance mutexes and unique handles (llama/23570) 2026-07-30 16:31:46 +03:00
ggml-webgpu ggml-webgpu: tune subgroup split (d_split) in flash_attn_vec (llama/25418) 2026-07-10 13:06:42 +03:00
ggml-zdnn vulkan: add get/set tensor 2d functions (llama/22514) 2026-05-01 13:07:35 +03:00
ggml-zendnn ggml-zendnn : fixed naming of matmul function (llama/20964) 2026-05-29 09:47:30 +03:00
CMakeLists.txt ggml-et: Initial ET backend (llama/24179) 2026-07-30 16:31:36 +03:00
ggml-alloc.c ggml-alloc: fix out-of-bounds read in ggml_dyn_tallocr_remove_block (ggml/1492) 2026-05-25 12:26:07 +03:00
ggml-backend-dl.cpp hexagon: enable offloading to Hexagon on Windows on Snapdragon (llama/19150) 2026-01-30 15:56:40 +02:00
ggml-backend-dl.h hexagon: enable offloading to Hexagon on Windows on Snapdragon (llama/19150) 2026-01-30 15:56:40 +02:00
ggml-backend-impl.h ggml: backend-agnostic tensor parallelism (experimental) (llama/19378) 2026-04-30 11:29:05 +03:00
ggml-backend-meta.cpp DeepseekV4: Add fused hyper-connection ops (llama/25585) 2026-07-30 16:31:43 +03:00
ggml-backend-reg.cpp ggml-et: Initial ET backend (llama/24179) 2026-07-30 16:31:36 +03:00
ggml-backend.cpp Revert "sched : reintroduce less synchronizations during split compute (#20793)" (llama/25138) 2026-07-10 13:06:42 +03:00
ggml-common.h Add Q2_0 quantization: type definition and CPU backend (llama/24448) 2026-07-10 13:06:42 +03:00
ggml-impl.h ggml: add graph_reused (llama/21764) 2026-04-30 11:29:11 +03:00
ggml-opt.cpp fix: free ctx_copy in ggml_opt_free to plug per-training-session leak (llama/21592) 2026-04-30 11:29:03 +03:00
ggml-quants.c Add Q2_0 quantization: type definition and CPU backend (llama/24448) 2026-07-10 13:06:42 +03:00
ggml-quants.h Add Q2_0 quantization: type definition and CPU backend (llama/24448) 2026-07-10 13:06:42 +03:00
ggml-threading.cpp ggml : build backends as libraries (llama/10256) 2024-11-20 21:00:08 +02:00
ggml-threading.h remove CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS (llama/10797) 2024-12-18 12:52:16 +02:00
ggml.c DeepseekV4: Add fused hyper-connection ops (llama/25585) 2026-07-30 16:31:43 +03:00
ggml.cpp ggml : Print backtrace on uncaught C++ exceptions (ggml/1232) 2025-05-29 09:56:26 +03:00
gguf.cpp gguf : add tensor shape accessor (llama/24405) 2026-07-30 16:31:38 +03:00