llama.cpp
ae4893a0 - vulkan: add tiled-transpose concat shader for Qwen models (#30591)

Commit
1 day ago
vulkan: add tiled-transpose concat shader for Qwen models (#30591) * vulkan: tiled transpose for dim-0 concat with a transposed source The delta-net conv-state path does ggml_transpose() straight into a dim-0 ggml_concat(), so the generic concat kernel reads src1 with the transposed stride, one element per thread, and neighbouring lanes land on different cache lines. Stage a 32x32 tile through shared memory instead, which keeps both the load and the store coalesced. 33 columns pads away the bank conflicts. Gated narrowly: dim 0, 2D, unquantized 4-byte elements, contiguous src0/dst rows, and src1 actually transposed. Everything else falls through to the existing kernel. Qwen3.6-35B-A3B on gfx1151/RADV, 30 gated-delta-net layers: the CONCAT op goes 11877 us -> 957 us, and pp2048 at ub2048 goes 1224 -> 1628 t/s. Generated text is unchanged. The approach follows the tiled transposed concat Gaetan Puleo wrote for the HIP backend in his Strix Halo fork. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * enable by default, add smaller shader sizes * clean up comments * improve shader * Add non-contiguous concat tests Co-authored-by: ravel7524 <58877666+ravel7524@users.noreply.github.com> * handle x or y axis overflow --------- Co-authored-by: Nathan Wilson <nath.flagman151@passmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: ravel7524 <58877666+ravel7524@users.noreply.github.com>
Author
Parents
Loading