]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commit
vulkan: Optimize some mat-vec mul quant shaders (#10296)
authorJeff Bolz <redacted>
Sat, 16 Nov 2024 06:26:57 +0000 (00:26 -0600)
committerGitHub <redacted>
Sat, 16 Nov 2024 06:26:57 +0000 (07:26 +0100)
commit772703c8fffdd83d2e28f60119e83525f1189412
treefdbd1237a238c8ae678105ffd5edc82eaacf08ab
parentdd3a6ce9f84d21ba05fe98af9f983bdea0398e6c
vulkan: Optimize some mat-vec mul quant shaders (#10296)

Compute two result elements per workgroup (for Q{4,5}_{0,1}). This reuses
the B loads across the rows and also reuses some addressing calculations.
This required manually partially unrolling the loop, since the compiler
is less willing to unroll outer loops.

Add bounds-checking on the last iteration of the loop. I think this was at
least partly broken before.

Optimize the Q4_K shader to vectorize most loads and reduce the number of
bit twiddling instructions.
ggml/src/ggml-vulkan/ggml-vulkan.cpp
ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec.comp
ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q4_k.comp
ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp