diff options
author | Kawrakow <iwankawrakow@gmail.com> | 2024-12-04 15:20:07 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-04 15:20:07 +0100 |
commit | f64de08203aaee95ca755336de3e1db85d990198 (patch) | |
tree | 9af01056e0b304ee5df5792f25d82066931eb4d6 /ggml/src/ggml-common.h | |
parent | f1f4eb988fe5ee969100cd0d3782fd7460d13949 (diff) |
IQ4_XS_R4 (#123)
* Adding iq4_xs_r4
This is a 1st working version on Zen4.
We get PP-512(LLaMA-3.1-8B) = 226 t/s, so 16% slower
than iq4_nl_x4.
* iq4_xs_r4: WIP
* iq4_xs_r4: Use AVX2 version for matrix x vector on Zen4
* iq4_xs_r4: NEON
We get PP-512(LLaMA-3.1-8B) = 115.6 t/s on M2-Max,
up from 68.2 t/s for iq4_xs!
* DRY
---------
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 | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ggml/src/ggml-common.h b/ggml/src/ggml-common.h index fb87a602..aa41bf55 100644 --- a/ggml/src/ggml-common.h +++ b/ggml/src/ggml-common.h @@ -448,6 +448,14 @@ typedef struct { static_assert(sizeof(block_iq4_xs) == sizeof(ggml_half) + sizeof(uint16_t) + QK_K/64 + QK_K/2, "wrong iq4_xs block size/padding"); typedef struct { + ggml_half d[4]; + uint8_t scales_h[QK_K/32]; + uint8_t scales_l[QK_K/16]; + uint8_t qs[QK_K*2]; +} block_iq4_xs_r4; +static_assert(sizeof(block_iq4_xs_r4) == 4*sizeof(ggml_half) + QK_K/32 + QK_K/16 + QK_K*2, "wrong iq4_xs_rs block size/padding"); + +typedef struct { uint8_t scales[QK_K/32]; uint8_t qs[QK_K/2]; } block_iq4_ks; |