Pascal
09412af38a
qwen4exp: sum the indexer heads by slices ( #28023 )
...
* qwen4exp: sum the indexer heads by slices
The head reduction went through a transpose and a sum_rows over ne[1],
which left sum_rows with ne0 = 4, one block per row for a four element
reduction, and the transpose copied the whole block by token surface
twice on the way in.
The heads are adjacent on ne[1], so each one is a strided view and the
sum is a short chain of adds.
RTX PRO 6000, Qwen3.8-Flash-Next UD-Q4_K_XL, fa on, 55k context, warm
runs on top of #28011 :
prompt processing 2170 -> 2366 t/s
Generation is unaffected. The removed work scales with n_blocks by
n_tokens, so the gain grows with context and with ubatch size.
* qwen4exp: drop the redundant cont on the indexer query
rope returns a freshly allocated, contiguous tensor, so the reshape that
feeds the matmul does not need a copy. ggml_reshape_3d asserts
contiguity, so a layout that would need the cont cannot slip through
silently.
Greedy output is unchanged token for token.
Address review from @ggerganov
2026-09-01 06:23:59 +02:00
..
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-22 12:19:48 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-10 11:58:32 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-13 19:49:00 +02:00
2026-07-31 14:57:02 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-21 18:54:29 +02:00
2026-06-05 11:09:36 +03:00
2026-08-23 13:57:49 +03:00
2026-08-19 16:05:50 +02:00
2026-05-16 11:09:27 +02:00
2026-07-08 18:18:09 +08:00
2026-08-31 11:19:20 +02:00
2026-06-05 11:09:36 +03:00
2026-08-21 19:52:34 +02:00
2026-06-05 11:09:36 +03:00
2026-07-28 09:58:16 +03:00
2026-05-16 11:09:27 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-11 07:20:17 +03:00
2026-06-05 11:17:54 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-08 13:48:52 -07:00
2026-08-27 15:14:34 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-23 21:20:44 +03:00
2026-06-05 11:09:36 +03:00
2026-08-19 16:05:50 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-19 16:53:31 +02:00
2026-08-19 16:53:31 +02:00
2026-08-19 16:53:31 +02:00
2026-08-19 16:53:31 +02:00
2026-08-19 16:53:31 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-05-04 12:36:59 +02:00
2026-06-05 11:09:36 +03:00
2026-05-16 11:09:27 +02:00
2026-07-31 14:57:02 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-15 17:11:05 +02:00
2026-06-05 11:09:36 +03:00
2026-07-28 21:02:33 +02:00
2026-08-20 16:36:57 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-05-04 12:36:59 +02:00
2026-06-12 10:21:06 +03:00
2026-06-05 11:09:36 +03:00
2026-06-26 08:50:54 +03:00
2026-08-24 09:25:11 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-02 09:03:05 +02:00
2026-08-21 18:54:29 +02:00
2026-06-05 11:09:36 +03:00
2026-08-28 09:45:19 +03:00
2026-07-13 15:22:37 +02:00
2026-08-14 23:34:56 +02:00
2026-06-05 11:09:36 +03:00
2026-05-04 12:36:59 +02:00
2026-08-28 19:24:46 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-10 13:07:27 +02:00
2026-08-27 07:55:31 +03:00
2026-08-10 11:25:24 +03:00
2026-08-11 18:46:26 +05:30
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-07-28 09:58:16 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-05-16 11:09:27 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-14 17:20:40 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-08-21 18:54:29 +02:00
2026-08-11 14:18:30 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-05-16 11:09:27 +02:00
2026-06-12 10:21:06 +03:00
2026-06-12 10:21:06 +03:00
2026-08-03 17:15:01 +09:00
2026-08-04 17:26:15 +02:00
2026-08-04 17:26:15 +02:00
2026-06-05 11:09:36 +03:00
2026-09-01 06:23:59 +02:00
2026-07-31 14:57:02 +02:00
2026-07-31 14:57:02 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-02-16 14:35:04 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-02-16 14:35:04 +02:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-06-05 11:09:36 +03:00
2026-07-31 14:57:02 +02:00
2026-06-05 11:09:36 +03:00
2026-05-04 12:36:59 +02:00
2026-06-05 11:09:36 +03:00
2026-05-16 11:09:27 +02:00
2026-06-05 11:09:36 +03:00