Skip to content

Commit d940de5

Browse files
author
horasal
committed
Fix scaler
1 parent 09a2b11 commit d940de5

File tree

6 files changed

+13
-8
lines changed

6 files changed

+13
-8
lines changed

ggml/src/ggml-common.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ typedef sycl::half2 ggml_half2;
102102
#define QI_MXFP4 (QK_MXFP4 / (4 * QR_MXFP4))
103103
#define QR_MXFP4 2
104104

105+
#define QI_MXFP6_E3M2 (QK_MXFP6_E3M2 * 3 / (4 * 4))
106+
// FIXME: QR(Value Per Byte) does not match this
107+
#define QR_MXFP6_E3M2 2
108+
105109
#define QI5_0 (QK5_0 / (4 * QR5_0))
106110
#define QR5_0 2
107111

@@ -1103,6 +1107,8 @@ GGML_TABLE_BEGIN(int8_t, kvalues_mxfp4, 16)
11031107
0, 1, 2, 3, 4, 6, 8, 12, 0, -1, -2, -3, -4, -6, -8, -12,
11041108
GGML_TABLE_END()
11051109

1110+
// 16^(-1)
1111+
#define MXFP6_SCALER 0.0625f
11061112
GGML_TABLE_BEGIN(int16_t, kvalues_mxfp6_e3m2, 64)
11071113
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28,
11081114
32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224,

ggml/src/ggml-cpu/arch/x86/quants.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ void ggml_vec_dot_mxfp6_e3m2_q8_0(int n, float * GGML_RESTRICT s, size_t bs, con
860860
int ib = 0;
861861
float sumf = 0;
862862

863-
#if defined __AVX2__
863+
#if 0 //defined __AVX2__
864864
__m256 accum_ps = _mm256_setzero_ps();
865865

866866
for (; ib + 1 < nb; ib += 2) {
@@ -870,7 +870,7 @@ void ggml_vec_dot_mxfp6_e3m2_q8_0(int n, float * GGML_RESTRICT s, size_t bs, con
870870
const block_mxfp6_e3m2 * x2 = &x[ib + 1];
871871
const block_q8_0 * y2 = &y[ib + 1];
872872

873-
alignas(32) int16_t k_vals_1[32];
873+
int16_t k_vals_1[32];
874874
{
875875
const uint8_t * q3 = x1->qs;
876876
for (int j = 0; j < 8; ++j) {
@@ -885,7 +885,7 @@ void ggml_vec_dot_mxfp6_e3m2_q8_0(int n, float * GGML_RESTRICT s, size_t bs, con
885885
}
886886
}
887887

888-
alignas(32) int16_t k_vals_2[32];
888+
int16_t k_vals_2[32];
889889
{
890890
const uint8_t * q3 = x2->qs;
891891
for (int j = 0; j < 8; ++j) {

ggml/src/ggml-cpu/quants.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ void ggml_vec_dot_mxfp6_e3m2_q8_0_generic(int n, float * GGML_RESTRICT s, size_t
240240

241241
for (; ib < nb; ++ib) {
242242
const float d = GGML_CPU_FP16_TO_FP32(y[ib].d)*GGML_E8M0_TO_FP32_HALF(x[ib].e);
243-
int sumi1 = 0;
243+
int sumi = 0;
244244
// Q8_0 (y) * MXFP6 (block_size = 32)
245245
for (int j = 0; j < QK_MXFP6_E3M2/4; ++j) {
246246
// Current Packed MXFP6
@@ -252,7 +252,6 @@ void ggml_vec_dot_mxfp6_e3m2_q8_0_generic(int n, float * GGML_RESTRICT s, size_t
252252
const uint8_t b1 = q3[1];
253253
const uint8_t b2 = q3[2];
254254

255-
const uint8_t v0_idx = b0 & 0x3F;
256255
const uint8_t v0_idx = b0 & 0x3F;
257256
const uint8_t v1_idx = (b0 >> 6) | ((b1 & 0x0F) << 2);
258257
const uint8_t v2_idx = (b1 >> 4) | ((b2 & 0x03) << 4);

ggml/src/ggml-cuda/convert.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ static __global__ void dequantize_block_mxfp6_e3m2(const void * __restrict__ vx,
506506

507507
const uint8_t b0 = q3[0];
508508
const uint8_t b1 = q3[1];
509-
const uint8_t b3 = q3[2];
509+
const uint8_t b2 = q3[2];
510510

511511
const uint8_t v0_idx = b0 & 0x3F;
512512
const uint8_t v1_idx = (b0 >> 6) | ((b1 & 0x0F) << 2);

ggml/src/ggml-quants.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ void quantize_row_mxfp6_e3m2_ref(const float * GGML_RESTRICT x, block_mxfp6_e3m2
301301
}
302302
}
303303

304-
const uint8_t e = amax > 0.0f ? (uint8_t) (floorf(log2f(amax)) - 9 + 127) : 0;
304+
const uint8_t e = amax > 0.0f ? (uint8_t) (floorf(log2f(amax)) - 4 + 127) : 0;
305305

306306
const float d = GGML_E8M0_TO_FP32_HALF(e);
307307

gguf-py/gguf/quants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,7 @@ def quantize_blocks(cls, blocks: np.ndarray) -> np.ndarray:
920920
with np.errstate(divide="ignore"):
921921
# convert log2(d_max) to e8m0
922922
# log2(448) = 8.8 -> shift 9
923-
e = np.where(d_max > 0, np.floor(np.log2(d_max)) - 9 + 127, 0).astype(
923+
e = np.where(d_max > 0, np.floor(np.log2(d_max)) - 4 + 127, 0).astype(
924924
np.uint8
925925
)
926926

0 commit comments

Comments
 (0)