ggml: skip excess iteration for pair whose vars same element when i2 == i1

This commit is contained in:
Herman Semenov 2024-08-26 02:41:27 +03:00
parent f91fc5639b
commit cfb1b2277f

View file

@ -13812,7 +13812,7 @@ static void quantize_row_iq1_s_impl(const float * restrict x, void * restrict vy
float best_score = -FLT_MIN, scale = max;
int besti1 = -1, besti2 = -1, best_shift = 0;
for (int i1 = 0; i1 <= block_size; ++i1) {
for (int i2 = i1; i2 <= block_size; ++i2) {
for (int i2 = i1 + 1; i2 <= block_size; ++i2) {
float sumqx = (sumx[i1] - sumx[0])*x_p[0] + (sumx[i2] - sumx[i1])*x_p[1] + (sumx[block_size] - sumx[i2])*x_p[2];
float sumq2 = (sumw[i1] - sumw[0])*x_p[0]*x_p[0] + (sumw[i2] - sumw[i1])*x_p[1]*x_p[1] + (sumw[block_size] - sumw[i2])*x_p[2]*x_p[2];
if (sumq2 > 0 && sumqx*sumqx > best_score*sumq2) {