llama-cpp-sys-4 0.7.0

Low Level Bindings to llama.cpp
Documentation
#version 450

#include "dequant_head.glsl"

layout (local_size_x = 256, local_size_y = 1, local_size_z = 1) in;

layout (binding = 0) readonly buffer A {block_tq1_0 data_a[];};
layout (binding = 1) writeonly buffer D {D_TYPE data_b[];};

void main() {
    const uint i = gl_GlobalInvocationID.x * 4;

    if (i >= p.nel) {
        return;
    }

    const uint ib = i / QUANT_K_TQ1_0;
    const float d = float(data_a[ib].d);

    [[unroll]] for (uint j = 0; j < 4 && (i + j) < p.nel; ++j) {
        const uint e = (i + j) % QUANT_K_TQ1_0;
        const uint bidx = tq1_0_byte_of(e);
        const uint qbyte = uint(bidx < 48u ? data_a[ib].qs[bidx]
                                           : data_a[ib].qh[bidx - 48u]);
        const uint xi = tq1_0_trit(qbyte, tq1_0_digit_of(e));
        data_b[i + j] = D_TYPE(d * (float(xi) - 1.0f));
    }
}