Skip to content

Commit 0eed534

Browse files
committed
Add Q2_0 Metal backend
1 parent 9f31ffc commit 0eed534

5 files changed

Lines changed: 217 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
@@ -742,6 +742,11 @@ ggml_metal_pipeline_with_params ggml_metal_library_get_pipeline_mul_mv(ggml_meta
742742
nsg = N_SG_Q1_0;
743743
nr0 = N_R0_Q1_0;
744744
} break;
745+
case GGML_TYPE_Q2_0:
746+
{
747+
nsg = N_SG_Q2_0;
748+
nr0 = N_R0_Q2_0;
749+
} break;
745750
case GGML_TYPE_Q4_0:
746751
{
747752
nsg = N_SG_Q4_0;
@@ -959,6 +964,11 @@ ggml_metal_pipeline_with_params ggml_metal_library_get_pipeline_mul_mv_id(ggml_m
959964
nsg = N_SG_Q1_0;
960965
nr0 = N_R0_Q1_0;
961966
} break;
967+
case GGML_TYPE_Q2_0:
968+
{
969+
nsg = N_SG_Q2_0;
970+
nr0 = N_R0_Q2_0;
971+
} break;
962972
case GGML_TYPE_Q4_0:
963973
{
964974
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
@@ -1204,6 +1204,7 @@ bool ggml_metal_device_supports_op(ggml_metal_device_t dev, const struct ggml_te
12041204
case GGML_TYPE_BF16:
12051205
case GGML_TYPE_Q8_0:
12061206
case GGML_TYPE_Q1_0:
1207+
case GGML_TYPE_Q2_0:
12071208
case GGML_TYPE_Q4_0:
12081209
case GGML_TYPE_Q4_1:
12091210
case GGML_TYPE_Q5_0:
@@ -1231,6 +1232,7 @@ bool ggml_metal_device_supports_op(ggml_metal_device_t dev, const struct ggml_te
12311232
return false;
12321233
}
12331234
case GGML_TYPE_Q1_0:
1235+
case GGML_TYPE_Q2_0:
12341236
case GGML_TYPE_Q4_0:
12351237
case GGML_TYPE_Q4_1:
12361238
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
@@ -11,6 +11,9 @@
1111
#define N_R0_Q1_0 8
1212
#define N_SG_Q1_0 2
1313

14+
#define N_R0_Q2_0 8
15+
#define N_SG_Q2_0 2
16+
1417
#define N_R0_Q4_0 4
1518
#define N_SG_Q4_0 2
1619

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,6 +2059,7 @@ int ggml_metal_op_mul_mat(ggml_metal_op_t ctx, int idx) {
20592059
op->src[0]->type == GGML_TYPE_F16 ||
20602060
op->src[0]->type == GGML_TYPE_BF16 ||
20612061
op->src[0]->type == GGML_TYPE_Q1_0 ||
2062+
op->src[0]->type == GGML_TYPE_Q2_0 ||
20622063
op->src[0]->type == GGML_TYPE_Q4_0 ||
20632064
op->src[0]->type == GGML_TYPE_Q4_1 ||
20642065
op->src[0]->type == GGML_TYPE_Q5_0 ||

0 commit comments

Comments
 (0)