ik_llama_opt/ggml/src/iqk
Kawrakow 23ac643459 Much faster CPU prompt processing (part 1) (#531)
* q6_K dequantizing GEMM

* Much easier: just use different vec_dot types!

* WIP

* Finally q6_K x q8_2_x4 dot product works

* Very slightly better

* We don't need the changes in ggml.c

* Fix AVX2

* iq2_xs

* Fix AVX2

* iq2_s

* q3_K

* Fix q8_k_r8 on Zen4

* q3_K: repack to q8_k_r8 instead of q8_0_r8

With that we hit 360 t/s for LlaMA-3.1-8B on a Ryzen-7950X.
q8_k_r8 is 386 t/s, so for a batch size of 512 repacking costs
~7% of the time taken by the actual GEMM.

* q3_K: don't scale when all quants in a block are <= 127 when repacking

* iq2_s: repack to q8_k_r8 instead of q8_0_r8

* iq2_xs: rapck to q8_k_r8

* WIP

* iq2_xs: repack to q8_k_r8

* iq3_xxs: repack to q8_k_r8

* iq3_s: use q8_k_r8

* iq1_s: repack to q8_k_r8

* iq1_m: repack to q8_k_r8

* iq1_m: slightly faster

* Slightly faster

---------

Co-authored-by: Iwan Kawrakow <iwan.kawrakow@gmail.com>
2025-06-17 07:12:48 +03:00
..
fa Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00
iqk_common.h IQ2_XXS: much faster CPU prompt processing (#515) 2025-06-11 11:12:30 +03:00
iqk_config.h Fix termux/android build (#336) 2025-04-21 09:13:46 +02:00
iqk_flash_attn.cpp Option to enable disable the IQK CPU FA kernels (#429) 2025-05-17 11:21:58 +03:00
iqk_flash_impl.h CPU FA improvements (#351) 2025-04-29 07:19:43 +02:00
iqk_gemm_1bit.cpp Much faster CPU prompt processing (part 1) (#531) 2025-06-17 07:12:48 +03:00
iqk_gemm_1bit.h Faster iq1_s GEMM via repacking to Q8_0_R8 (#517) 2025-06-11 15:01:34 +03:00
iqk_gemm_floats.cpp Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00
iqk_gemm_floats.h Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00
iqk_gemm_iqk_quants.cpp Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00
iqk_gemm_iqk_quants.h Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00
iqk_gemm_iquants.cpp Much faster CPU prompt processing (part 1) (#531) 2025-06-17 07:12:48 +03:00
iqk_gemm_iquants.h IQ2_XXS: much faster CPU prompt processing (#515) 2025-06-11 11:12:30 +03:00
iqk_gemm_kquants.cpp Much faster CPU prompt processing (part 1) (#531) 2025-06-17 07:12:48 +03:00
iqk_gemm_kquants.h Faster CPU prompt processing for Q4_K and Q5_K (#525) 2025-06-13 07:58:15 +03:00
iqk_gemm_ktquants.cpp Trellis quants: faster CPU prompt processing (#482) 2025-06-01 15:24:05 +03:00
iqk_gemm_ktquants.h Trellis quants: faster CPU prompt processing (#482) 2025-06-01 15:24:05 +03:00
iqk_gemm_legacy_quants.cpp Faster CPU prompt processing for Q4_K and Q5_K (#525) 2025-06-13 07:58:15 +03:00
iqk_gemm_legacy_quants.h Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00
iqk_mul_mat.cpp Much faster CPU prompt processing (part 1) (#531) 2025-06-17 07:12:48 +03:00
iqk_mul_mat.h Much faster CPU prompt processing (part 1) (#531) 2025-06-17 07:12:48 +03:00
iqk_quantize.cpp Much faster CPU prompt processing (part 1) (#531) 2025-06-17 07:12:48 +03:00
iqk_quantize.h Trellis quants with CPU inference (#441) 2025-05-23 09:17:52 +03:00
iqk_utils.h Refactor iqk_mul_mat.cpp (#435) 2025-05-22 10:05:51 +03:00