summaryrefslogtreecommitdiff
path: root/ggml/src/ggml-common.h
diff options
context:
space:
mode:
authorKawrakow <iwankawrakow@gmail.com>2024-12-04 15:20:07 +0100
committerGitHub <noreply@github.com>2024-12-04 15:20:07 +0100
commitf64de08203aaee95ca755336de3e1db85d990198 (patch)
tree9af01056e0b304ee5df5792f25d82066931eb4d6 /ggml/src/ggml-common.h
parentf1f4eb988fe5ee969100cd0d3782fd7460d13949 (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.h8
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;