Files
llama.cpp/ggml/src/ggml-cuda
David Friehs 27b93cbd15 cuda: optimize iq2xxs/iq2xs/iq3xxs dequantization (#19624)
* cuda: optimize iq2xxs/iq2xs/iq3xxs dequantization

- load all 8 int8 for a grid position in one load
- calculate signs via popcnt instead of fetching from ksigns table
- broadcast signs to drop individual shift/mask

* cuda: iq2xxs: simplify sum scaling

express `(sum * scale + sum / 2) / 4` as `(sum * (scale * 2 + 1)) / 8`
express `((aux32 >> 28) * 2 + 1)` as `(aux32 >> 27 | 1)`

saves 3 registers for mul_mat_vec_q (152 -> 149) according to nsight
AFAICT no overflow can occur here as iq2xxs values are far too small

* uint -> uint32_t

error: identifier "uint" is undefined
2026-02-15 22:38:42 +05:30
..
2025-08-20 10:17:37 +08:00
2025-08-05 22:10:36 +03:00
2025-06-20 09:50:24 +08:00
2025-06-20 09:50:24 +08:00
2025-08-28 20:33:03 +02:00
2025-12-09 20:28:57 +01:00
2025-12-09 20:28:57 +01:00
2025-12-08 21:10:12 +08:00
2025-06-22 12:39:54 +08:00
2026-01-29 11:10:53 +01:00
2026-01-29 11:10:53 +01:00
2026-01-29 11:10:53 +01:00
2025-10-26 19:28:04 +08:00
2025-07-29 14:45:18 +08:00
2025-07-29 14:45:18 +08:00
2026-02-08 15:12:51 +02:00
2025-11-13 08:50:01 +08:00
2025-07-29 14:22:03 +02:00
2025-07-29 14:22:03 +02:00
2025-03-31 18:05:13 +02:00
2025-03-31 18:05:13 +02:00
2025-06-22 12:39:54 +08:00
2025-11-30 21:57:31 +01:00