Skip to content

Commit 14d3ba4

Browse files
metal : add Q2_0 support (ggml-org#25419)
1 parent 2969d6d commit 14d3ba4

5 files changed

Lines changed: 213 additions & 0 deletions

File tree

ggml/src/ggml-metal/ggml-metal-device.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,11 @@ ggml_metal_pipeline_with_params ggml_metal_library_get_pipeline_mul_mv(ggml_meta
805805
nsg = N_SG_Q1_0;
806806
nr0 = N_R0_Q1_0;
807807
} break;
808+
case GGML_TYPE_Q2_0:
809+
{
810+
nsg = N_SG_Q2_0;
811+
nr0 = N_R0_Q2_0;
812+
} break;
808813
case GGML_TYPE_Q4_0:
809814
{
810815
nsg = N_SG_Q4_0;
@@ -1029,6 +1034,11 @@ ggml_metal_pipeline_with_params ggml_metal_library_get_pipeline_mul_mv_id(ggml_m
10291034
nsg = N_SG_Q1_0;
10301035
nr0 = N_R0_Q1_0;
10311036
} break;
1037+
case GGML_TYPE_Q2_0:
1038+
{
1039+
nsg = N_SG_Q2_0;
1040+
nr0 = N_R0_Q2_0;
1041+
} break;
10321042
case GGML_TYPE_Q4_0:
10331043
{
10341044
nsg = N_SG_Q4_0;

ggml/src/ggml-metal/ggml-metal-device.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,6 +1289,7 @@ bool ggml_metal_device_supports_op(ggml_metal_device_t dev, const struct ggml_te
12891289
case GGML_TYPE_BF16:
12901290
case GGML_TYPE_Q8_0:
12911291
case GGML_TYPE_Q1_0:
1292+
case GGML_TYPE_Q2_0:
12921293
case GGML_TYPE_Q4_0:
12931294
case GGML_TYPE_Q4_1:
12941295
case GGML_TYPE_Q5_0:
@@ -1316,6 +1317,7 @@ bool ggml_metal_device_supports_op(ggml_metal_device_t dev, const struct ggml_te
13161317
return false;
13171318
}
13181319
case GGML_TYPE_Q1_0:
1320+
case GGML_TYPE_Q2_0:
13191321
case GGML_TYPE_Q4_0:
13201322
case GGML_TYPE_Q4_1:
13211323
case GGML_TYPE_Q5_0:

ggml/src/ggml-metal/ggml-metal-impl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
#define N_R0_Q1_0 8
2525
#define N_SG_Q1_0 2
2626

27+
#define N_R0_Q2_0 8
28+
#define N_SG_Q2_0 2
29+
2730
#define N_R0_Q4_0 4
2831
#define N_SG_Q4_0 2
2932

ggml/src/ggml-metal/ggml-metal-ops.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2077,6 +2077,7 @@ int ggml_metal_op_mul_mat(ggml_metal_op_t ctx, int idx) {
20772077
op->src[0]->type == GGML_TYPE_F16 ||
20782078
op->src[0]->type == GGML_TYPE_BF16 ||
20792079
op->src[0]->type == GGML_TYPE_Q1_0 ||
2080+
op->src[0]->type == GGML_TYPE_Q2_0 ||
20802081
op->src[0]->type == GGML_TYPE_Q4_0 ||
20812082
op->src[0]->type == GGML_TYPE_Q4_1 ||
20822083
op->src[0]->type == GGML_TYPE_Q5_0 ||

0 commit comments

Comments
 (0)