

1464c62d88
metal: implement DSv4 Lightning Indexer (#25893)
* metal: implement F16 Lightning Indexer
- Implement GGML_OP_LIGHTNING_INDEXER for 128-dimensional, 64-head inputs
with F32 queries and weights plus F16 keys and masks.
- Add tiled and tail kernels and test KV lengths around 8- and 64-element
boundaries.
llama-bench (--mmap 1, -fa 1, -p 512, -n 128; d=0/10k/20k/30k):
Before:
- pp512: 153.73 ± 0.87 t/s
- tg128: 8.91 ± 0.04 t/s
- pp512 @ d10000: 73.90 ± 0.39 t/s
- tg128 @ d10000: 8.66 ± 0.03 t/s
- pp512 @ d20000: 45.83 ± 0.18 t/s
- tg128 @ d20000: 8.26 ± 0.03 t/s
- pp512 @ d30000: 33.40 ± 0.21 t/s
- tg128 @ d30000: 7.94 ± 0.01 t/s
After:
- pp512: 155.19 ± 0.91 t/s
- tg128: 8.95 ± 0.04 t/s
- pp512 @ d10000: 86.95 ± 0.69 t/s
- tg128 @ d10000: 9.00 ± 0.05 t/s
- pp512 @ d20000: 62.01 ± 0.45 t/s
- tg128 @ d20000: 8.68 ± 0.04 t/s
- pp512 @ d30000: 49.18 ± 0.33 t/s
- tg128 @ d30000: 8.60 ± 0.02 t/s
Assisted-by: Codex
* metal: stage Lightning Indexer K tiles
- Stage and dequantize K in F16 threadgroup memory before simdgroup matrix loads.
- Zero-fill partial tiles and guard stores so all KV segments use the same numerical path.
- Support F32, F16, BF16, Q4_0, Q4_1, Q5_0, Q5_1, and Q8_0 K caches.
llama-bench (--mmap 1, -fa on, -p 512, -n 128; d=0/10k/20k):
- pp512: 160.38 +/- 1.01 t/s
- tg128: 9.08 +/- 0.03 t/s
- pp512 @ d10000: 88.37 +/- 0.46 t/s
- tg128 @ d10000: 9.07 +/- 0.04 t/s
- pp512 @ d20000: 62.53 +/- 0.46 t/s
- tg128 @ d20000: 8.84 +/- 0.03 t/s
Assisted-by: Codex
* dedup Lightning Indexer constants, fix flaky test
* cont : fix whitespace
---------
Co-authored-by: forforever73 <690105611@qq.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2026-08-03 07:33:37 +03:00
..
2026-06-21 16:20:58 -05:00
2026-07-30 19:34:04 +03:00
2026-04-02 22:53:58 +02:00
2026-07-30 19:34:04 +03:00
2026-05-26 19:05:48 +03:00
2026-04-02 22:53:58 +02:00
2026-07-13 15:36:51 +03:00
2026-07-27 16:44:08 +08:00
2026-07-30 19:34:04 +03:00
2026-08-03 07:33:37 +03:00
2026-07-30 19:34:04 +03:00
2025-12-10 12:32:23 -08:00
2026-07-10 11:04:31 +08:00
2025-07-03 07:48:32 +03:00
2026-07-22 09:54:08 +08:00
2026-08-02 04:13:20 -05:00
2026-06-28 15:50:31 +02:00
2026-08-02 04:13:20 -05:00
2026-06-09 12:01:37 +03:00
2024-07-12 10:46:02 +03:00
2026-07-14 13:15:41 +03:00
2025-04-24 16:00:10 +03:00
2026-04-02 22:53:58 +02:00
2026-07-13 13:55:15 +03:00
2026-03-21 18:43:35 +01:00
2025-12-22 11:00:37 +01:00
2026-03-21 18:43:35 +01:00
2026-07-26 20:54:25 +02:00
2026-06-20 17:43:04 -05:00
2026-08-02 00:16:29 +02:00
2026-03-21 18:43:35 +01:00
2026-04-29 10:58:43 +03:00
2025-12-10 15:28:59 +01:00
2026-07-30 19:34:04 +03:00
2026-06-08 14:40:12 +03:00
2025-08-26 22:14:38 +02:00
2026-03-06 21:01:00 +01:00
2026-07-30 19:34:04 +03:00
2026-07-07 12:05:47 -07:00
2025-09-25 08:06:06 +03:00
2026-07-23 20:32:56 +08:00
2026-07-25 11:58:09 +02:00
2026-08-02 20:55:34 +08:00
2025-11-11 13:33:24 +02:00
2026-07-30 19:34:04 +03:00
2026-06-22 14:08:32 +03:00
2026-07-27 13:11:20 +03:00
2026-05-05 09:23:50 +02:00
2026-06-25 09:22:51 +03:00
2025-12-22 11:00:37 +01:00
2026-04-09 12:36:29 +02:00
2026-02-26 12:14:09 +01:00
2025-12-22 11:00:37 +01:00
2025-12-22 11:00:37 +01:00
2026-04-09 12:36:29 +02:00
2025-09-27 02:03:33 +08:00
2026-01-16 11:22:06 +01:00