diff --git a/tests/test-quantize.c b/tests/test-quantize.c index 5c61a07f1..d44fa39f4 100644 --- a/tests/test-quantize.c +++ b/tests/test-quantize.c @@ -3,32 +3,30 @@ #include #include -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - int main(void) { - const int qk0 = ggml_blck_size(GGML_TYPE_Q4_0); - const int qk1 = ggml_blck_size(GGML_TYPE_Q4_1); - const int qk_max = MAX(qk0, qk1); - float src[qk_max]; + #define QK 32 + assert(ggml_blck_size(GGML_TYPE_Q4_0) == QK); + assert(ggml_blck_size(GGML_TYPE_Q4_1) == QK); + float src[QK]; uint8_t dst[24]; int64_t hist[16]; - for (int i = 0; i < qk_max; i++) { + for (int i = 0; i < QK; i++) { src[i] = (float)(i + 1); } - size_t size = ggml_quantize_q4_0(src, dst, qk0, qk0, hist); + size_t size = ggml_quantize_q4_0(src, dst, QK, QK, hist); assert(size == 20); float max_result = ((float *)dst)[0]; float max_expected = src[31] / ((1 << 3) - 1); assert(max_result == max_expected); - for (int i = 0; i < qk0; i++) { + for (int i = 0; i < QK; i++) { uint8_t q4_result = (i % 2) ? (dst[sizeof(float) + i/2] >> 4) : (dst[sizeof(float) + i/2] & 0xF); uint8_t q4_expected = roundf(src[i] / max_expected) + 8; assert(q4_result == q4_expected); } - size = ggml_quantize_q4_1(src, dst, qk1, qk1, hist); + size = ggml_quantize_q4_1(src, dst, QK, QK, hist); assert(size == 24); float delta_result = ((float *)dst)[0]; float delta_expected = (src[31] - src[0]) / ((1 << 4) - 1); @@ -36,7 +34,7 @@ int main(void) { float min_result = ((float *)dst)[1]; float min_expected = src[0]; assert(min_result == min_expected); - for (int i = 0; i < qk1; i++) { + for (int i = 0; i < QK; i++) { uint8_t q4_result = (i % 2) ? (dst[sizeof(float)*2 + i/2] >> 4) : (dst[sizeof(float)*2 + i/2] & 0xF); uint8_t q4_expected = roundf((src[i] - min_expected) / delta_expected); assert(q4_result == q4_expected);