Commit 071b553fb for llama.cpp
commit 071b553fb1d3a1b76c0b12ab9a1546714cafe4e1
Author: Muhammad Saad <saadydev@gmail.com>
Date: Tue Oct 13 03:26:52 2026 -0400
models : remove redundant ggml_cont calls now supported by all unary kernels (#30198)
* models: remove redundant ggml_cont calls now supported by CUDA unary kernels
* models: restore cont_2d after sigmoid for broadcast mul, clean dflash cont
* Update src/models/qwen3next.cpp
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co>
* models: restore cont_2d before sigmoid in qwen3next
---------
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co>
diff --git a/src/models/delta-net-base.cpp b/src/models/delta-net-base.cpp
index ad6612647..2e15777ee 100644
--- a/src/models/delta-net-base.cpp
+++ b/src/models/delta-net-base.cpp
@@ -205,9 +205,6 @@ std::pair<ggml_tensor *, ggml_tensor *> llm_build_delta_net_base::build_delta_ne
ggml_row_size(g_cs->type, g_cs->ne[0] - 1));
cb(g_last, "g_last", il);
- // TODO: remove this cont when CUDA supports non-cont unary ops
- g_last = ggml_cont(ctx0, g_last);
-
// [1, 1, n_chunks, H_v * n_seqs] KDA: [S_k, 1, n_chunks, H_v * n_seqs]
ggml_tensor * g_last_exp_t = ggml_transpose(ctx0, ggml_exp(ctx0, g_last));
cb(g_last_exp_t, "g_last_exp_t", il);
diff --git a/src/models/dflash.cpp b/src/models/dflash.cpp
index b6cb6bfb9..3f426f566 100644
--- a/src/models/dflash.cpp
+++ b/src/models/dflash.cpp
@@ -337,7 +337,7 @@ static void build_dspark_markov_head(llm_graph_context & g, const llama_model &
// bonus anchor slot: pass the logits through unbiased, pad the (unread) confidence column
cat = ggml_cont(ctx0, ggml_view_2d(ctx0, base, n_vocab, n_blocks, base_stride, 0));
if (has_conf) {
- cat_conf = ggml_sigmoid(ctx0, ggml_cont(ctx0, ggml_view_2d(ctx0, base, 1, n_blocks, base_stride, 0)));
+ cat_conf = ggml_sigmoid(ctx0, ggml_view_2d(ctx0, base, 1, n_blocks, base_stride, 0));
}
}
diff --git a/src/models/qwen3next.cpp b/src/models/qwen3next.cpp
index 49c28b134..68be550a5 100644
--- a/src/models/qwen3next.cpp
+++ b/src/models/qwen3next.cpp
@@ -296,7 +296,6 @@ ggml_tensor * llama_model_qwen3next::graph::build_layer_attn(
Qcur, Kcur, Vcur, nullptr, nullptr, nullptr, kq_scale, il);
cb(cur, "attn_pregate", il);
- // TODO: CUDA is missing non-contiguous unary ops. when implemented: remove this cont
gate = ggml_cont_2d(ctx0, gate, n_embd_head * n_head, n_tokens);
gate = ggml_sigmoid(ctx0, gate);
@@ -437,9 +436,6 @@ ggml_tensor * llama_model_qwen3next::graph::build_layer_attn_linear(
split_sizes_ba[0] * ggml_element_size(mixed_ba_reshaped));
cb(a, "a", il);
- // TODO: CUDA is missing non-contiguous unary ops. when implemented: remove this cont
- b = ggml_cont(ctx0, b);
-
ggml_tensor * beta = ggml_sigmoid(ctx0, b);
// Reshape a to merge head dimensions: [batch, seq_len, num_k_heads, num_v_heads/num_k_heads] -> [batch, seq_len, num_v_heads]
@@ -739,7 +735,6 @@ llama_model_qwen3next::graph_mtp::graph_mtp(const llama_model & model, const llm
ggml_element_size(Qcur_full) * n_embd_head * 2 * n_head,
ggml_element_size(Qcur_full) * n_embd_head);
- // TODO: CUDA is missing non-contiguous unary ops. when implemented: remove this cont
gate = ggml_cont_2d(ctx0, gate, n_embd_head * n_head, n_tokens);
cb(gate, "mtp_gate", il);