@@ -1308,6 +1308,19 @@ static const ggml_type_traits_t type_traits[GGML_TYPE_COUNT] = {
13081308 .nrows = 1,
13091309 .row_meta_size = 0,
13101310 },
1311+ [GGML_TYPE_IQ2_K_R4] = {
1312+ .type_name = "iq2_k_r4",
1313+ .blck_size = QK_K,
1314+ .type_size = sizeof(block_iq2_k),
1315+ .is_quantized = true,
1316+ .to_float = (ggml_to_float_t) dequantize_row_iq2_k_r4,
1317+ .from_float = quantize_row_iq2_k_r4,
1318+ .from_float_ref = (ggml_from_float_t)quantize_row_iq2_k_r4_ref,
1319+ .vec_dot = vec_dot_iq2_k_r4_q8_k,
1320+ .vec_dot_type = GGML_TYPE_Q8_K,
1321+ .nrows = 1,
1322+ .row_meta_size = 0,
1323+ },
13111324 [GGML_TYPE_IQ2_KS] = {
13121325 .type_name = "iq2_ks",
13131326 .blck_size = QK_K,
@@ -4173,6 +4186,7 @@ enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype) {
41734186 case GGML_FTYPE_MOSTLY_IQ4_KS: wtype = GGML_TYPE_IQ4_KS; break;
41744187 case GGML_FTYPE_MOSTLY_IQ4_KSS: wtype = GGML_TYPE_IQ4_KSS; break;
41754188 case GGML_FTYPE_MOSTLY_IQ2_K: wtype = GGML_TYPE_IQ2_K; break;
4189+ case GGML_FTYPE_MOSTLY_IQ2_K_R4: wtype = GGML_TYPE_IQ2_K_R4; break;
41764190 case GGML_FTYPE_MOSTLY_IQ2_KS: wtype = GGML_TYPE_IQ2_KS; break;
41774191 case GGML_FTYPE_MOSTLY_IQ3_K: wtype = GGML_TYPE_IQ3_K; break;
41784192 case GGML_FTYPE_MOSTLY_IQ4_K: wtype = GGML_TYPE_IQ4_K; break;
@@ -10711,6 +10725,7 @@ static void ggml_compute_forward_add(
1071110725 case GGML_TYPE_IQ4_KS:
1071210726 case GGML_TYPE_IQ4_KSS:
1071310727 case GGML_TYPE_IQ2_K:
10728+ case GGML_TYPE_IQ2_K_R4:
1071410729 case GGML_TYPE_IQ2_KS:
1071510730 case GGML_TYPE_IQ3_K:
1071610731 case GGML_TYPE_IQ4_K:
@@ -11168,6 +11183,7 @@ static void ggml_compute_forward_add1(
1116811183 case GGML_TYPE_IQ4_KS:
1116911184 case GGML_TYPE_IQ4_KSS:
1117011185 case GGML_TYPE_IQ2_K:
11186+ case GGML_TYPE_IQ2_K_R4:
1117111187 case GGML_TYPE_IQ2_KS:
1117211188 case GGML_TYPE_IQ3_K:
1117311189 case GGML_TYPE_IQ4_K:
@@ -11322,6 +11338,7 @@ static void ggml_compute_forward_acc(
1132211338 case GGML_TYPE_IQ4_KS:
1132311339 case GGML_TYPE_IQ4_KSS:
1132411340 case GGML_TYPE_IQ2_K:
11341+ case GGML_TYPE_IQ2_K_R4:
1132511342 case GGML_TYPE_IQ2_KS:
1132611343 case GGML_TYPE_IQ3_K:
1132711344 case GGML_TYPE_IQ4_K:
@@ -14522,6 +14539,7 @@ static void ggml_compute_forward_out_prod(
1452214539 case GGML_TYPE_IQ4_KS:
1452314540 case GGML_TYPE_IQ4_KSS:
1452414541 case GGML_TYPE_IQ2_K:
14542+ case GGML_TYPE_IQ2_K_R4:
1452514543 case GGML_TYPE_IQ2_KS:
1452614544 case GGML_TYPE_IQ3_K:
1452714545 case GGML_TYPE_IQ4_K:
@@ -14916,6 +14934,7 @@ static void ggml_compute_forward_set(
1491614934 case GGML_TYPE_IQ4_KS:
1491714935 case GGML_TYPE_IQ4_KSS:
1491814936 case GGML_TYPE_IQ2_K:
14937+ case GGML_TYPE_IQ2_K_R4:
1491914938 case GGML_TYPE_IQ2_KS:
1492014939 case GGML_TYPE_IQ3_K:
1492114940 case GGML_TYPE_IQ4_K:
@@ -15204,6 +15223,7 @@ static void ggml_compute_forward_get_rows(
1520415223 case GGML_TYPE_IQ4_KS:
1520515224 case GGML_TYPE_IQ4_KSS:
1520615225 case GGML_TYPE_IQ2_K:
15226+ case GGML_TYPE_IQ2_K_R4:
1520715227 case GGML_TYPE_IQ2_KS:
1520815228 case GGML_TYPE_IQ3_K:
1520915229 case GGML_TYPE_IQ4_K:
@@ -15821,6 +15841,7 @@ static void ggml_compute_forward_clamp(
1582115841 case GGML_TYPE_IQ4_KS:
1582215842 case GGML_TYPE_IQ4_KSS:
1582315843 case GGML_TYPE_IQ2_K:
15844+ case GGML_TYPE_IQ2_K_R4:
1582415845 case GGML_TYPE_IQ2_KS:
1582515846 case GGML_TYPE_IQ3_K:
1582615847 case GGML_TYPE_IQ4_K:
@@ -22666,6 +22687,7 @@ size_t ggml_quantize_chunk(
2266622687 case GGML_TYPE_IQ4_KS: result = quantize_iq4_ks (src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
2266722688 case GGML_TYPE_IQ4_KSS: result = quantize_iq4_kss(src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
2266822689 case GGML_TYPE_IQ2_K: result = quantize_iq2_k (src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
22690+ case GGML_TYPE_IQ2_K_R4:result = quantize_iq2_k_r4(src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
2266922691 case GGML_TYPE_IQ2_KS: result = quantize_iq2_ks (src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
2267022692 case GGML_TYPE_IQ3_K: result = quantize_iq3_k (src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
2267122693 case GGML_TYPE_IQ4_K: result = quantize_iq4_k (src + start, (char *) dst + start_row * row_size, nrows, n_per_row, imatrix); break;
0 commit comments