diff options
author | Kawrakow <iwankawrakow@gmail.com> | 2025-02-09 09:14:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-09 09:14:52 +0200 |
commit | 33390c4b74fa52875d6028c5c9aaf84f17288c25 (patch) | |
tree | 97578e59530316c4b0637590d28e7e46ac8bb892 /ggml/src/ggml-common.h | |
parent | 6d7b58eade37e45e3d8286a2353658047539d2b2 (diff) |
Use Q8_K_128 for IQ1_S_R4 and IQ1_M_R4 matrix multiplications (#194)
* iq1_s_r4: Use Q8_K_128 instead of Q8_1_X4 for gemm (AVX2/Zen4)
* iq1_m_r4: Use Q8_K_128 instead of Q8_1_X4 for gemm (AVX2/Zen4)
* iq1_s_r4: Use Q8_K_128 instead of Q8_1_X4 for gemm (Neon)
* iq1_m_r4: Use Q8_K_128 instead of Q8_0_X4 for gemm (Neon)
* Simdify q8_K128 quantization also on Neon
* Cleanup
---------
Co-authored-by: Iwan Kawrakow <iwan.kawrakow@gmail.com>
Diffstat (limited to 'ggml/src/ggml-common.h')
-rw-r--r-- | ggml/src/ggml-common.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ggml/src/ggml-common.h b/ggml/src/ggml-common.h index 0d014c23..4308f0b9 100644 --- a/ggml/src/ggml-common.h +++ b/ggml/src/ggml-common.h @@ -377,15 +377,16 @@ typedef struct { } block_q8_K; static_assert(sizeof(block_q8_K) == sizeof(float) + QK_K + QK_K/16*sizeof(int16_t), "wrong q8_K block size/padding"); typedef struct { - float d; // delta + float d; // delta int8_t qs[64]; // quants } block_q8_K64; static_assert(sizeof(block_q8_K64) == sizeof(float) + 64, "wrong q8_K64 block size/padding"); typedef struct { float d; // delta + int16_t bsums[4]; // quant sums for blocks of 32 int8_t qs[128]; // quants } block_q8_K128; -static_assert(sizeof(block_q8_K128) == sizeof(float) + 128, "wrong q8_K128 block size/padding"); +static_assert(sizeof(block_q8_K128) == sizeof(float) + 4*sizeof(int16_t) + 128, "wrong q8_K128 block size/padding"); typedef struct { ggml_half d[8]; // delta |