Add Q2_0 quantization: type definition and CPU backend (#24448)
This commit is contained in:
@@ -96,6 +96,9 @@ typedef sycl::half2 ggml_half2;
|
||||
#define QI1_0 (QK1_0 / 32)
|
||||
#define QR1_0 1
|
||||
|
||||
#define QI2_0 (QK2_0 / 32)
|
||||
#define QR2_0 1
|
||||
|
||||
|
||||
#define QI4_0 (QK4_0 / (4 * QR4_0))
|
||||
#define QR4_0 2
|
||||
@@ -181,6 +184,13 @@ typedef struct {
|
||||
} block_q1_0;
|
||||
static_assert(sizeof(block_q1_0) == sizeof(ggml_half) + QK1_0 / 8, "wrong q1_0 block size/padding");
|
||||
|
||||
#define QK2_0 64
|
||||
typedef struct {
|
||||
ggml_half d; // delta (scale)
|
||||
uint8_t qs[QK2_0 / 4]; // 2 bits per element
|
||||
} block_q2_0;
|
||||
static_assert(sizeof(block_q2_0) == sizeof(ggml_half) + QK2_0 / 4, "wrong q2_0 block size/padding");
|
||||
|
||||
#define QK4_0 32
|
||||
typedef struct {
|
||||
ggml_half d; // delta
|
||||
|
||||
Reference in New Issue
Block a user