Commit 6225bf8 for stable-diffusion.cpp
commit 6225bf8c88a76e4baf3b7be86c0e6933414f26eb
Author: Piotr Wilkin (ilintar) <ilintar@gmail.com>
Date: Tue Nov 3 16:46:35 2026 +0100
perf: view qkv slices for moss instead of slice+reshape (#2232)
diff --git a/src/model/diffusion/moss_image.hpp b/src/model/diffusion/moss_image.hpp
index 36d8d83..1f5dc16 100644
--- a/src/model/diffusion/moss_image.hpp
+++ b/src/model/diffusion/moss_image.hpp
@@ -79,7 +79,8 @@ namespace MOSSImage {
auto y = norm("norm1", x);
auto qkv = linear("qkv", y);
auto split = [&](int i) {
- return ggml_reshape_4d(c, ggml_ext_slice(c, qkv, 0, i * config.dim, (i + 1) * config.dim), config.head_dim, config.dim / config.head_dim, x->ne[1], x->ne[2]);
+ // q/k feed rms_norm and v a permuted copy, which read these strided views in place.
+ return ggml_view_4d(c, qkv, config.head_dim, config.dim / config.head_dim, x->ne[1], x->ne[2], config.head_dim * qkv->nb[0], qkv->nb[1], qkv->nb[2], i * config.dim * qkv->nb[0]);
};
auto q = norm("q_norm", split(0));
auto k = norm("k_norm", split(1));