From b67198c6ef14a9e8f158f55e1cd88f88788f1468 Mon Sep 17 00:00:00 2001 From: SignalRT Date: Mon, 6 Nov 2023 23:56:12 +0100 Subject: [PATCH] MacOS Intel Disable METAL --- LLama/LLamaSharp.Runtime.targets | 4 - LLama/runtimes/macos-x86_64/ggml-metal.metal | 2823 ------------------ LLama/runtimes/macos-x86_64/libllama.dylib | Bin 981616 -> 925024 bytes 3 files changed, 2827 deletions(-) delete mode 100644 LLama/runtimes/macos-x86_64/ggml-metal.metal diff --git a/LLama/LLamaSharp.Runtime.targets b/LLama/LLamaSharp.Runtime.targets index 3b2acc30..bc9a6911 100644 --- a/LLama/LLamaSharp.Runtime.targets +++ b/LLama/LLamaSharp.Runtime.targets @@ -39,9 +39,5 @@ PreserveNewest runtimes/macos-x86_64/libllama.dylib - - PreserveNewest - runtimes/macos-x86_64/ggml-metal.metal - \ No newline at end of file diff --git a/LLama/runtimes/macos-x86_64/ggml-metal.metal b/LLama/runtimes/macos-x86_64/ggml-metal.metal deleted file mode 100644 index 7c35f23a..00000000 --- a/LLama/runtimes/macos-x86_64/ggml-metal.metal +++ /dev/null @@ -1,2823 +0,0 @@ -#include - -using namespace metal; - -#define MAX(x, y) ((x) > (y) ? (x) : (y)) - -#define QK4_0 32 -#define QR4_0 2 -typedef struct { - half d; // delta - uint8_t qs[QK4_0 / 2]; // nibbles / quants -} block_q4_0; - -#define QK4_1 32 -typedef struct { - half d; // delta - half m; // min - uint8_t qs[QK4_1 / 2]; // nibbles / quants -} block_q4_1; - -#define QK5_0 32 -typedef struct { - half d; // delta - uint8_t qh[4]; // 5-th bit of quants - uint8_t qs[QK5_0 / 2]; // nibbles / quants -} block_q5_0; - -#define QK5_1 32 -typedef struct { - half d; // delta - half m; // min - uint8_t qh[4]; // 5-th bit of quants - uint8_t qs[QK5_1 / 2]; // nibbles / quants -} block_q5_1; - -#define QK8_0 32 -typedef struct { - half d; // delta - int8_t qs[QK8_0]; // quants -} block_q8_0; - -// general-purpose kernel for addition of two tensors -// pros: works for non-contiguous tensors, supports broadcast across dims 1, 2 and 3 -// cons: not very efficient -kernel void kernel_add( - device const char * src0, - device const char * src1, - device char * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant int64_t & nb00, - constant int64_t & nb01, - constant int64_t & nb02, - constant int64_t & nb03, - constant int64_t & ne10, - constant int64_t & ne11, - constant int64_t & ne12, - constant int64_t & ne13, - constant int64_t & nb10, - constant int64_t & nb11, - constant int64_t & nb12, - constant int64_t & nb13, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant int64_t & nb0, - constant int64_t & nb1, - constant int64_t & nb2, - constant int64_t & nb3, - uint3 tgpig[[threadgroup_position_in_grid]], - uint3 tpitg[[thread_position_in_threadgroup]], - uint3 ntg[[threads_per_threadgroup]]) { - const int64_t i03 = tgpig.z; - const int64_t i02 = tgpig.y; - const int64_t i01 = tgpig.x; - - const int64_t i13 = i03 % ne13; - const int64_t i12 = i02 % ne12; - const int64_t i11 = i01 % ne11; - - device const char * src0_ptr = src0 + i03*nb03 + i02*nb02 + i01*nb01 + tpitg.x*nb00; - device const char * src1_ptr = src1 + i13*nb13 + i12*nb12 + i11*nb11 + tpitg.x*nb10; - device char * dst_ptr = dst + i03*nb3 + i02*nb2 + i01*nb1 + tpitg.x*nb0; - - for (int i0 = tpitg.x; i0 < ne0; i0 += ntg.x) { - ((device float *)dst_ptr)[0] = ((device float *)src0_ptr)[0] + ((device float *)src1_ptr)[0]; - - src0_ptr += ntg.x*nb00; - src1_ptr += ntg.x*nb10; - dst_ptr += ntg.x*nb0; - } -} - -// assumption: src1 is a row -// broadcast src1 into src0 -kernel void kernel_add_row( - device const float4 * src0, - device const float4 * src1, - device float4 * dst, - constant int64_t & nb [[buffer(27)]], - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = src0[tpig] + src1[tpig % nb]; -} - -kernel void kernel_mul( - device const float4 * src0, - device const float4 * src1, - device float4 * dst, - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = src0[tpig] * src1[tpig]; -} - -// assumption: src1 is a row -// broadcast src1 into src0 -kernel void kernel_mul_row( - device const float4 * src0, - device const float4 * src1, - device float4 * dst, - constant int64_t & nb, - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = src0[tpig] * src1[tpig % nb]; -} - -kernel void kernel_scale( - device const float * src0, - device float * dst, - constant float & scale, - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = src0[tpig] * scale; -} - -kernel void kernel_scale_4( - device const float4 * src0, - device float4 * dst, - constant float & scale, - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = src0[tpig] * scale; -} - -kernel void kernel_silu( - device const float4 * src0, - device float4 * dst, - uint tpig[[thread_position_in_grid]]) { - device const float4 & x = src0[tpig]; - dst[tpig] = x / (1.0f + exp(-x)); -} - -kernel void kernel_relu( - device const float * src0, - device float * dst, - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = max(0.0f, src0[tpig]); -} - -kernel void kernel_sqr( - device const float * src0, - device float * dst, - uint tpig[[thread_position_in_grid]]) { - dst[tpig] = src0[tpig] * src0[tpig]; -} - -constant float GELU_COEF_A = 0.044715f; -constant float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f; - -kernel void kernel_gelu( - device const float4 * src0, - device float4 * dst, - uint tpig[[thread_position_in_grid]]) { - device const float4 & x = src0[tpig]; - - // BEWARE !!! - // Simply using "tanh" instead of "precise::tanh" will sometimes results in NaNs! - // This was observed with Falcon 7B and 40B models - // - dst[tpig] = 0.5f*x*(1.0f + precise::tanh(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x))); -} - -kernel void kernel_soft_max( - device const float * src0, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - threadgroup float * buf [[threadgroup(0)]], - uint tgpig[[threadgroup_position_in_grid]], - uint tpitg[[thread_position_in_threadgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]], - uint tiisg[[thread_index_in_simdgroup]], - uint ntg[[threads_per_threadgroup]]) { - const int64_t i03 = (tgpig) / (ne02*ne01); - const int64_t i02 = (tgpig - i03*ne02*ne01) / ne01; - const int64_t i01 = (tgpig - i03*ne02*ne01 - i02*ne01); - - device const float * psrc0 = src0 + i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00; - device float * pdst = dst + i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00; - - // parallel max - float lmax = tpitg < ne00 ? psrc0[tpitg] : -INFINITY; - - for (int i00 = tpitg + ntg; i00 < ne00; i00 += ntg) { - lmax = MAX(lmax, psrc0[i00]); - } - - float max = simd_max(lmax); - if (tiisg == 0) { - buf[sgitg] = max; - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - // broadcast, simd group number is ntg / 32 - for (uint i = ntg / 32 / 2; i > 0; i /= 2) { - if (tpitg < i) { - buf[tpitg] = MAX(buf[tpitg], buf[tpitg + i]); - } - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - max = buf[0]; - - // parallel sum - float lsum = 0.0f; - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { - const float exp_psrc0 = exp(psrc0[i00] - max); - lsum += exp_psrc0; - // Remember the result of exp here. exp is expensive, so we really do not - // wish to compute it twice. - pdst[i00] = exp_psrc0; - } - - float sum = simd_sum(lsum); - if (tiisg == 0) { - buf[sgitg] = sum; - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - // broadcast, simd group number is ntg / 32 - for (uint i = ntg / 32 / 2; i > 0; i /= 2) { - if (tpitg < i) { - buf[tpitg] += buf[tpitg + i]; - } - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - sum = buf[0]; - - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { - pdst[i00] /= sum; - } -} - -kernel void kernel_soft_max_4( - device const float * src0, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - threadgroup float * buf [[threadgroup(0)]], - uint tgpig[[threadgroup_position_in_grid]], - uint tpitg[[thread_position_in_threadgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]], - uint tiisg[[thread_index_in_simdgroup]], - uint ntg[[threads_per_threadgroup]]) { - const int64_t i03 = (tgpig) / (ne02*ne01); - const int64_t i02 = (tgpig - i03*ne02*ne01) / ne01; - const int64_t i01 = (tgpig - i03*ne02*ne01 - i02*ne01); - - device const float4 * psrc4 = (device const float4 *)(src0 + i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00); - device float4 * pdst4 = (device float4 *)(dst + i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00); - - // parallel max - float4 lmax4 = tpitg < ne00/4 ? psrc4[tpitg] : -INFINITY; - - for (int i00 = tpitg + ntg; i00 < ne00/4; i00 += ntg) { - lmax4 = fmax(lmax4, psrc4[i00]); - } - - const float lmax = MAX(MAX(lmax4[0], lmax4[1]), MAX(lmax4[2], lmax4[3])); - float max = simd_max(lmax); - if (tiisg == 0) { - buf[sgitg] = max; - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - // broadcast, simd group number is ntg / 32 - for (uint i = ntg / 32 / 2; i > 0; i /= 2) { - if (tpitg < i) { - buf[tpitg] = MAX(buf[tpitg], buf[tpitg + i]); - } - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - max = buf[0]; - - // parallel sum - float4 lsum4 = 0.0f; - for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) { - const float4 exp_psrc4 = exp(psrc4[i00] - max); - lsum4 += exp_psrc4; - pdst4[i00] = exp_psrc4; - } - - const float lsum = lsum4[0] + lsum4[1] + lsum4[2] + lsum4[3]; - float sum = simd_sum(lsum); - if (tiisg == 0) { - buf[sgitg] = sum; - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - // broadcast, simd group number is ntg / 32 - for (uint i = ntg / 32 / 2; i > 0; i /= 2) { - if (tpitg < i) { - buf[tpitg] += buf[tpitg + i]; - } - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - sum = buf[0]; - - for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) { - pdst4[i00] /= sum; - } -} - -kernel void kernel_diag_mask_inf( - device const float * src0, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int & n_past, - uint3 tpig[[thread_position_in_grid]]) { - const int64_t i02 = tpig[2]; - const int64_t i01 = tpig[1]; - const int64_t i00 = tpig[0]; - - if (i00 > n_past + i01) { - dst[i02*ne01*ne00 + i01*ne00 + i00] = -INFINITY; - } else { - dst[i02*ne01*ne00 + i01*ne00 + i00] = src0[i02*ne01*ne00 + i01*ne00 + i00]; - } -} - -kernel void kernel_diag_mask_inf_8( - device const float4 * src0, - device float4 * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int & n_past, - uint3 tpig[[thread_position_in_grid]]) { - - const int64_t i = 2*tpig[0]; - - dst[i+0] = src0[i+0]; - dst[i+1] = src0[i+1]; - int64_t i4 = 4*i; - const int64_t i02 = i4/(ne00*ne01); i4 -= i02*ne00*ne01; - const int64_t i01 = i4/(ne00); i4 -= i01*ne00; - const int64_t i00 = i4; - for (int k = 3; k >= 0; --k) { - if (i00 + 4 + k <= n_past + i01) { - break; - } - dst[i+1][k] = -INFINITY; - if (i00 + k > n_past + i01) { - dst[i][k] = -INFINITY; - } - } -} - -kernel void kernel_norm( - device const void * src0, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant float & eps, - threadgroup float * sum [[threadgroup(0)]], - uint tgpig[[threadgroup_position_in_grid]], - uint tpitg[[thread_position_in_threadgroup]], - uint ntg[[threads_per_threadgroup]]) { - device const float * x = (device const float *) ((device const char *) src0 + tgpig*nb01); - // MEAN - // parallel sum - sum[tpitg] = 0.0f; - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { - sum[tpitg] += x[i00]; - } - // reduce - threadgroup_barrier(mem_flags::mem_threadgroup); - for (uint i = ntg/2; i > 0; i /= 2) { - if (tpitg < i) { - sum[tpitg] += sum[tpitg + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - } - const float mean = sum[0] / ne00; - - // recenter and VARIANCE - threadgroup_barrier(mem_flags::mem_threadgroup); - device float * y = dst + tgpig*ne00; - sum[tpitg] = 0.0f; - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { - y[i00] = x[i00] - mean; - sum[tpitg] += y[i00] * y[i00]; - } - - // reduce - threadgroup_barrier(mem_flags::mem_threadgroup); - for (uint i = ntg/2; i > 0; i /= 2) { - if (tpitg < i) { - sum[tpitg] += sum[tpitg + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - } - const float variance = sum[0] / ne00; - - const float scale = 1.0f/sqrt(variance + eps); - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { - y[i00] = y[i00] * scale; - } -} - -kernel void kernel_rms_norm( - device const void * src0, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant float & eps, - threadgroup float * sum [[threadgroup(0)]], - uint tgpig[[threadgroup_position_in_grid]], - uint tpitg[[thread_position_in_threadgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]], - uint tiisg[[thread_index_in_simdgroup]], - uint ntg[[threads_per_threadgroup]]) { - device const float4 * x = (device const float4 *) ((device const char *) src0 + tgpig*nb01); - device const float * x_scalar = (device const float *) x; - - float4 sumf = 0; - float all_sum = 0; - - // parallel sum - for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) { - sumf += x[i00] * x[i00]; - } - all_sum = sumf[0] + sumf[1] + sumf[2] + sumf[3]; - all_sum = simd_sum(all_sum); - if (tiisg == 0) { - sum[sgitg] = all_sum; - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - // broadcast, simd group number is ntg / 32 - for (uint i = ntg / 32 / 2; i > 0; i /= 2) { - if (tpitg < i) { - sum[tpitg] += sum[tpitg + i]; - } - } - if (tpitg == 0) { - for (int i = 4 * (ne00 / 4); i < ne00; i++) { - sum[0] += x_scalar[i]; - } - sum[0] /= ne00; - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - const float mean = sum[0]; - const float scale = 1.0f/sqrt(mean + eps); - - device float4 * y = (device float4 *) (dst + tgpig*ne00); - device float * y_scalar = (device float *) y; - for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) { - y[i00] = x[i00] * scale; - } - if (tpitg == 0) { - for (int i00 = 4 * (ne00 / 4); i00 < ne00; i00++) { - y_scalar[i00] = x_scalar[i00] * scale; - } - } -} - -// function for calculate inner product between half a q4_0 block and 16 floats (yl), sumy is SUM(yl[i]) -// il indicates where the q4 quants begin (0 or QK4_0/4) -// we assume that the yl's have been multiplied with the appropriate scale factor -// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096) -inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thread float * yl, int il) { - float d = qb_curr->d; - - float2 acc = 0.f; - - device const uint16_t * qs = ((device const uint16_t *)qb_curr + 1 + il/2); - - for (int i = 0; i < 8; i+=2) { - acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F) - + yl[i + 1] * (qs[i / 2] & 0x0F00); - acc[1] += yl[i + 8] * (qs[i / 2] & 0x00F0) - + yl[i + 9] * (qs[i / 2] & 0xF000); - } - return d * (sumy * -8.f + acc[0] + acc[1]); -} - -// function for calculate inner product between half a q4_1 block and 16 floats (yl), sumy is SUM(yl[i]) -// il indicates where the q4 quants begin (0 or QK4_0/4) -// we assume that the yl's have been multiplied with the appropriate scale factor -// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096) -inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thread float * yl, int il) { - float d = qb_curr->d; - float m = qb_curr->m; - - float2 acc = 0.f; - - device const uint16_t * qs = ((device const uint16_t *)qb_curr + 2 + il/2); - - for (int i = 0; i < 8; i+=2) { - acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F) - + yl[i + 1] * (qs[i / 2] & 0x0F00); - acc[1] += yl[i + 8] * (qs[i / 2] & 0x00F0) - + yl[i + 9] * (qs[i / 2] & 0xF000); - } - return d * (acc[0] + acc[1]) + sumy * m; -} - -// function for calculate inner product between half a q5_0 block and 16 floats (yl), sumy is SUM(yl[i]) -// il indicates where the q5 quants begin (0 or QK5_0/4) -// we assume that the yl's have been multiplied with the appropriate scale factor -// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096) -inline float block_q_n_dot_y(device const block_q5_0 * qb_curr, float sumy, thread float * yl, int il) { - float d = qb_curr->d; - - float2 acc = 0.f; - - device const uint16_t * qs = ((device const uint16_t *)qb_curr + 3 + il/2); - const uint32_t qh = *((device const uint32_t *)qb_curr->qh); - - for (int i = 0; i < 8; i+=2) { - acc[0] += yl[i + 0] * ((qs[i / 2] & 0x000F) | ((qh >> (i+0+il ) << 4 ) & 0x00010)) - + yl[i + 1] * ((qs[i / 2] & 0x0F00) | ((qh >> (i+1+il ) << 12) & 0x01000)); - acc[1] += yl[i + 8] * ((qs[i / 2] & 0x00F0) | ((qh >> (i+0+il+QK5_0/2) << 8 ) & 0x00100)) - + yl[i + 9] * ((qs[i / 2] & 0xF000) | ((qh >> (i+1+il+QK5_0/2) << 16) & 0x10000)); - } - return d * (sumy * -16.f + acc[0] + acc[1]); -} - -// function for calculate inner product between half a q5_1 block and 16 floats (yl), sumy is SUM(yl[i]) -// il indicates where the q5 quants begin (0 or QK5_1/4) -// we assume that the yl's have been multiplied with the appropriate scale factor -// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096) -inline float block_q_n_dot_y(device const block_q5_1 * qb_curr, float sumy, thread float * yl, int il) { - float d = qb_curr->d; - float m = qb_curr->m; - - float2 acc = 0.f; - - device const uint16_t * qs = ((device const uint16_t *)qb_curr + 4 + il/2); - const uint32_t qh = *((device const uint32_t *)qb_curr->qh); - - for (int i = 0; i < 8; i+=2) { - acc[0] += yl[i + 0] * ((qs[i / 2] & 0x000F) | ((qh >> (i+0+il ) << 4 ) & 0x00010)) - + yl[i + 1] * ((qs[i / 2] & 0x0F00) | ((qh >> (i+1+il ) << 12) & 0x01000)); - acc[1] += yl[i + 8] * ((qs[i / 2] & 0x00F0) | ((qh >> (i+0+il+QK5_0/2) << 8 ) & 0x00100)) - + yl[i + 9] * ((qs[i / 2] & 0xF000) | ((qh >> (i+1+il+QK5_0/2) << 16) & 0x10000)); - } - return d * (acc[0] + acc[1]) + sumy * m; -} - -// putting them in the kernel cause a significant performance penalty -#define N_DST 4 // each SIMD group works on 4 rows -#define N_SIMDGROUP 2 // number of SIMD groups in a thread group -#define N_SIMDWIDTH 32 // assuming SIMD group size is 32 -//Note: This is a template, but strictly speaking it only applies to -// quantizations where the block size is 32. It also does not -// giard against the number of rows not being divisible by -// N_DST, so this is another explicit assumption of the implementation. -template -void mul_vec_q_n_f32(device const void * src0, device const float * src1, device float * dst, - int64_t ne00, int64_t ne01, int64_t ne02, int64_t ne10, int64_t ne12, int64_t ne0, int64_t ne1, uint gqa, - uint3 tgpig, uint tiisg, uint sgitg) { - const int nb = ne00/QK4_0; - - const int r0 = tgpig.x; - const int r1 = tgpig.y; - const int im = tgpig.z; - - const int first_row = (r0 * nsg + sgitg) * nr; - - const uint offset0 = first_row * nb + im/gqa*(nb*ne0); - - device const block_q_type * x = (device const block_q_type *) src0 + offset0; - device const float * y = (device const float *) src1 + r1*ne10 + im*ne00*ne1; - - float yl[16]; // src1 vector cache - float sumf[nr] = {0.f}; - - const int ix = (tiisg/2); - const int il = (tiisg%2)*8; - - device const float * yb = y + ix * QK4_0 + il; - - // each thread in a SIMD group deals with half a block. - for (int ib = ix; ib < nb; ib += nw/2) { - float sumy = 0; - for (int i = 0; i < 8; i += 2) { - sumy += yb[i] + yb[i+1]; - yl[i+0] = yb[i+ 0]; - yl[i+1] = yb[i+ 1]/256.f; - - sumy += yb[i+16] + yb[i+17]; - yl[i+8] = yb[i+16]/16.f; - yl[i+9] = yb[i+17]/4096.f; - } - - for (int row = 0; row < nr; row++) { - sumf[row] += block_q_n_dot_y(x+ib+row*nb, sumy, yl, il); - } - - yb += QK4_0 * 16; - } - - for (int row = 0; row < nr; ++row) { - const float tot = simd_sum(sumf[row]); - if (tiisg == 0 && first_row + row < ne01) { - dst[im*ne0*ne1 + r1*ne0 + first_row + row] = tot; - } - } -} - -kernel void kernel_mul_mv_q4_0_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - mul_vec_q_n_f32(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg); -} - -kernel void kernel_mul_mv_q4_1_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - mul_vec_q_n_f32(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg); -} - -kernel void kernel_mul_mv_q5_0_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - mul_vec_q_n_f32(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg); -} - -kernel void kernel_mul_mv_q5_1_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - mul_vec_q_n_f32(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg); -} - - -#define NB_Q8_0 8 - -kernel void kernel_mul_mv_q8_0_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - const int nr = N_DST; - const int nsg = N_SIMDGROUP; - const int nw = N_SIMDWIDTH; - - const int nb = ne00/QK8_0; - const int r0 = tgpig.x; - const int r1 = tgpig.y; - const int im = tgpig.z; - const int first_row = (r0 * nsg + sgitg) * nr; - const uint offset0 = first_row * nb + im/gqa*(nb*ne0); - device const block_q8_0 * x = (device const block_q8_0 *) src0 + offset0; - device const float * y = (device const float *) src1 + r1*ne10 + im*ne00*ne1; - - float yl[NB_Q8_0]; - float sumf[nr]={0.f}; - - const int ix = tiisg/4; - const int il = tiisg%4; - - device const float * yb = y + ix * QK8_0 + NB_Q8_0*il; - - // each thread in a SIMD group deals with NB_Q8_0 quants at a time - for (int ib = ix; ib < nb; ib += nw/4) { - for (int i = 0; i < NB_Q8_0; ++i) { - yl[i] = yb[i]; - } - - for (int row = 0; row < nr; row++) { - device const int8_t * qs = x[ib+row*nb].qs + NB_Q8_0*il; - float sumq = 0.f; - for (int iq = 0; iq < NB_Q8_0; ++iq) { - sumq += qs[iq] * yl[iq]; - } - sumf[row] += sumq*x[ib+row*nb].d; - } - - yb += NB_Q8_0 * nw; - } - - for (int row = 0; row < nr; ++row) { - const float tot = simd_sum(sumf[row]); - if (tiisg == 0 && first_row + row < ne01) { - dst[r1*ne0 + im*ne0*ne1 + first_row + row] = tot; - } - } -} - -#define N_F32_F32 4 - -kernel void kernel_mul_mv_f32_f32( - device const char * src0, - device const char * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant int64_t & ne10, - constant int64_t & ne11, - constant int64_t & ne12, - constant uint64_t & nb10, - constant uint64_t & nb11, - constant uint64_t & nb12, - constant int64_t & ne0, - constant int64_t & ne1, - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]]) { - - const int64_t r0 = tgpig.x; - const int64_t rb = tgpig.y*N_F32_F32; - const int64_t im = tgpig.z; - - device const float * x = (device const float *) (src0 + r0*nb01 + im/(ne12/ne02)*nb02); - - if (ne00 < 128) { - for (int row = 0; row < N_F32_F32; ++row) { - int r1 = rb + row; - if (r1 >= ne11) { - break; - } - - device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12); - - float sumf = 0; - for (int i = tiisg; i < ne00; i += 32) { - sumf += (float) x[i] * (float) y[i]; - } - - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } - } else { - device const float4 * x4 = (device const float4 *)x; - for (int row = 0; row < N_F32_F32; ++row) { - int r1 = rb + row; - if (r1 >= ne11) { - break; - } - - device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12); - device const float4 * y4 = (device const float4 *) y; - - float sumf = 0; - for (int i = tiisg; i < ne00/4; i += 32) { - for (int k = 0; k < 4; ++k) sumf += (float) x4[i][k] * y4[i][k]; - } - - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - for (int i = 4*(ne00/4); i < ne00; ++i) all_sum += (float) x[i] * y[i]; - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } - } -} - -kernel void kernel_mul_mv_f16_f32_1row( - device const char * src0, - device const char * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant int64_t & ne10, - constant int64_t & ne11, - constant int64_t & ne12, - constant uint64_t & nb10, - constant uint64_t & nb11, - constant uint64_t & nb12, - constant int64_t & ne0, - constant int64_t & ne1, - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]]) { - - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; - const int64_t im = tgpig.z; - - device const half * x = (device const half *) (src0 + r0*nb01 + im/(ne12/ne02)*nb02); - device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12); - - float sumf = 0; - if (ne00 < 128) { - for (int i = tiisg; i < ne00; i += 32) { - sumf += (float) x[i] * (float) y[i]; - } - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } else { - device const half4 * x4 = (device const half4 *) x; - device const float4 * y4 = (device const float4 *) y; - for (int i = tiisg; i < ne00/4; i += 32) { - for (int k = 0; k < 4; ++k) sumf += (float)x4[i][k] * y4[i][k]; - } - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - for (int i = 4*(ne00/4); i < ne00; ++i) all_sum += (float) x[i] * y[i]; - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } - -} - -#define N_F16_F32 4 - -kernel void kernel_mul_mv_f16_f32( - device const char * src0, - device const char * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant int64_t & ne10, - constant int64_t & ne11, - constant int64_t & ne12, - constant uint64_t & nb10, - constant uint64_t & nb11, - constant uint64_t & nb12, - constant int64_t & ne0, - constant int64_t & ne1, - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]]) { - - const int64_t r0 = tgpig.x; - const int64_t rb = tgpig.y*N_F16_F32; - const int64_t im = tgpig.z; - - device const half * x = (device const half *) (src0 + r0*nb01 + im/(ne12/ne02)*nb02); - - if (ne00 < 128) { - for (int row = 0; row < N_F16_F32; ++row) { - int r1 = rb + row; - if (r1 >= ne11) { - break; - } - - device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12); - - float sumf = 0; - for (int i = tiisg; i < ne00; i += 32) { - sumf += (float) x[i] * (float) y[i]; - } - - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } - } else { - device const half4 * x4 = (device const half4 *)x; - for (int row = 0; row < N_F16_F32; ++row) { - int r1 = rb + row; - if (r1 >= ne11) { - break; - } - - device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12); - device const float4 * y4 = (device const float4 *) y; - - float sumf = 0; - for (int i = tiisg; i < ne00/4; i += 32) { - for (int k = 0; k < 4; ++k) sumf += (float) x4[i][k] * y4[i][k]; - } - - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - for (int i = 4*(ne00/4); i < ne00; ++i) all_sum += (float) x[i] * y[i]; - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } - } -} - -// Assumes row size (ne00) is a multiple of 4 -kernel void kernel_mul_mv_f16_f32_l4( - device const char * src0, - device const char * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant int64_t & ne10, - constant int64_t & ne11, - constant int64_t & ne12, - constant uint64_t & nb10, - constant uint64_t & nb11, - constant uint64_t & nb12, - constant int64_t & ne0, - constant int64_t & ne1, - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]]) { - - const int nrows = ne11; - const int64_t r0 = tgpig.x; - const int64_t im = tgpig.z; - - device const half4 * x4 = (device const half4 *) (src0 + r0*nb01 + im/(ne12/ne02)*nb02); - - for (int r1 = 0; r1 < nrows; ++r1) { - device const float4 * y4 = (device const float4 *) (src1 + r1*nb11 + im*nb12); - - float sumf = 0; - for (int i = tiisg; i < ne00/4; i += 32) { - for (int k = 0; k < 4; ++k) sumf += (float) x4[i][k] * y4[i][k]; - } - - float all_sum = simd_sum(sumf); - if (tiisg == 0) { - dst[im*ne1*ne0 + r1*ne0 + r0] = all_sum; - } - } -} - -kernel void kernel_alibi_f32( - device const float * src0, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - constant float & m0, - constant float & m1, - constant int & n_heads_log2_floor, - uint3 tgpig[[threadgroup_position_in_grid]], - uint3 tpitg[[thread_position_in_threadgroup]], - uint3 ntg[[threads_per_threadgroup]]) { - const int64_t i03 = tgpig[2]; - const int64_t i02 = tgpig[1]; - const int64_t i01 = tgpig[0]; - - const int64_t n = i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00; - - const int64_t i3 = n / (ne2*ne1*ne0); - const int64_t i2 = (n - i3*ne2*ne1*ne0) / (ne1*ne0); - const int64_t i1 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0) / ne0; - const int64_t i0 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0 - i1*ne0); - - device float * dst_data = (device float *) ((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); - float m_k; - if (i2 < n_heads_log2_floor) { - m_k = pow(m0, i2 + 1); - } else { - m_k = pow(m1, 2 * (i2 - n_heads_log2_floor) + 1); - } - for (int64_t i00 = tpitg.x; i00 < ne00; i00 += ntg.x) { - device const float * src = (device float *)((device char *) src0 + i03*nb03 + i02*nb02 + i01*nb01 + i00*nb00); - dst_data[i00] = src[0] + m_k * (i00 - ne00 + 1); - } -} - -static float rope_yarn_ramp(const float low, const float high, const int i0) { - const float y = (i0 / 2 - low) / max(0.001f, high - low); - return 1.0f - min(1.0f, max(0.0f, y)); -} - -// YaRN algorithm based on LlamaYaRNScaledRotaryEmbedding.py from https://github.com/jquesnelle/yarn -// MIT licensed. Copyright (c) 2023 Jeffrey Quesnelle and Bowen Peng. -static void rope_yarn( - float theta_extrap, float freq_scale, float corr_dims[2], int64_t i0, float ext_factor, float mscale, - thread float * cos_theta, thread float * sin_theta -) { - // Get n-d rotational scaling corrected for extrapolation - float theta_interp = freq_scale * theta_extrap; - float theta = theta_interp; - if (ext_factor != 0.0f) { - float ramp_mix = rope_yarn_ramp(corr_dims[0], corr_dims[1], i0) * ext_factor; - theta = theta_interp * (1 - ramp_mix) + theta_extrap * ramp_mix; - - // Get n-d magnitude scaling corrected for interpolation - mscale *= 1.0f + 0.1f * log(1.0f / freq_scale); - } - *cos_theta = cos(theta) * mscale; - *sin_theta = sin(theta) * mscale; -} - -// Apparently solving `n_rot = 2pi * x * base^((2 * max_pos_emb) / n_dims)` for x, we get -// `corr_fac(n_rot) = n_dims * log(max_pos_emb / (n_rot * 2pi)) / (2 * log(base))` -static float rope_yarn_corr_factor(int n_dims, int n_orig_ctx, float n_rot, float base) { - return n_dims * log(n_orig_ctx / (n_rot * 2 * M_PI_F)) / (2 * log(base)); -} - -static void rope_yarn_corr_dims( - int n_dims, int n_orig_ctx, float freq_base, float beta_fast, float beta_slow, float dims[2] -) { - // start and end correction dims - dims[0] = max(0.0f, floor(rope_yarn_corr_factor(n_dims, n_orig_ctx, beta_fast, freq_base))); - dims[1] = min(n_dims - 1.0f, ceil(rope_yarn_corr_factor(n_dims, n_orig_ctx, beta_slow, freq_base))); -} - -typedef void (rope_t)( - device const void * src0, - device const int32_t * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - constant int & n_past, - constant int & n_dims, - constant int & mode, - constant int & n_orig_ctx, - constant float & freq_base, - constant float & freq_scale, - constant float & ext_factor, - constant float & attn_factor, - constant float & beta_fast, - constant float & beta_slow, - uint tiitg[[thread_index_in_threadgroup]], - uint3 tptg[[threads_per_threadgroup]], - uint3 tgpig[[threadgroup_position_in_grid]]); - -template -kernel void kernel_rope( - device const void * src0, - device const int32_t * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - constant int & n_past, - constant int & n_dims, - constant int & mode, - constant int & n_orig_ctx, - constant float & freq_base, - constant float & freq_scale, - constant float & ext_factor, - constant float & attn_factor, - constant float & beta_fast, - constant float & beta_slow, - uint tiitg[[thread_index_in_threadgroup]], - uint3 tptg[[threads_per_threadgroup]], - uint3 tgpig[[threadgroup_position_in_grid]]) { - const int64_t i3 = tgpig[2]; - const int64_t i2 = tgpig[1]; - const int64_t i1 = tgpig[0]; - - const bool is_neox = mode & 2; - - float corr_dims[2]; - rope_yarn_corr_dims(n_dims, n_orig_ctx, freq_base, beta_fast, beta_slow, corr_dims); - - device const int32_t * pos = src1; - - const int64_t p = pos[i2]; - - const float theta_0 = (float)p; - const float inv_ndims = -1.f/n_dims; - - if (!is_neox) { - for (int64_t i0 = 2*tiitg; i0 < ne0; i0 += 2*tptg.x) { - - const float theta = theta_0 * pow(freq_base, inv_ndims*i0); - float cos_theta, sin_theta; - rope_yarn(theta, freq_scale, corr_dims, i0, ext_factor, attn_factor, &cos_theta, &sin_theta); - - device const T * const src = (device T *)((device char *) src0 + i3*nb03 + i2*nb02 + i1*nb01 + i0*nb00); - device T * dst_data = (device T *)((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); - - const T x0 = src[0]; - const T x1 = src[1]; - - dst_data[0] = x0*cos_theta - x1*sin_theta; - dst_data[1] = x0*sin_theta + x1*cos_theta; - } - } else { - for (int64_t ib = 0; ib < ne0/n_dims; ++ib) { - for (int64_t ic = 2*tiitg; ic < n_dims; ic += 2*tptg.x) { - - // simplified from `(ib * n_dims + ic) * inv_ndims` - const float cur_rot = inv_ndims*ic - ib; - - const float theta = theta_0 * pow(freq_base, cur_rot); - float cos_theta, sin_theta; - rope_yarn(theta, freq_scale, corr_dims, cur_rot, ext_factor, attn_factor, &cos_theta, &sin_theta); - - const int64_t i0 = ib*n_dims + ic/2; - - device const T * const src = (device T *)((device char *) src0 + i3*nb03 + i2*nb02 + i1*nb01 + i0*nb00); - device T * dst_data = (device T *)((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); - - const float x0 = src[0]; - const float x1 = src[n_dims/2]; - - dst_data[0] = x0*cos_theta - x1*sin_theta; - dst_data[n_dims/2] = x0*sin_theta + x1*cos_theta; - } - } - } -} - -template [[host_name("kernel_rope_f32")]] kernel rope_t kernel_rope; -template [[host_name("kernel_rope_f16")]] kernel rope_t kernel_rope; - -kernel void kernel_cpy_f16_f16( - device const half * src0, - device half * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - uint3 tgpig[[threadgroup_position_in_grid]], - uint3 tpitg[[thread_position_in_threadgroup]], - uint3 ntg[[threads_per_threadgroup]]) { - const int64_t i03 = tgpig[2]; - const int64_t i02 = tgpig[1]; - const int64_t i01 = tgpig[0]; - - const int64_t n = i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00; - - const int64_t i3 = n / (ne2*ne1*ne0); - const int64_t i2 = (n - i3*ne2*ne1*ne0) / (ne1*ne0); - const int64_t i1 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0) / ne0; - const int64_t i0 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0 - i1*ne0); - - device half * dst_data = (device half *) ((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); - - for (int64_t i00 = tpitg.x; i00 < ne00; i00 += ntg.x) { - device const half * src = (device half *)((device char *) src0 + i03*nb03 + i02*nb02 + i01*nb01 + i00*nb00); - dst_data[i00] = src[0]; - } -} - -kernel void kernel_cpy_f32_f16( - device const float * src0, - device half * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - uint3 tgpig[[threadgroup_position_in_grid]], - uint3 tpitg[[thread_position_in_threadgroup]], - uint3 ntg[[threads_per_threadgroup]]) { - const int64_t i03 = tgpig[2]; - const int64_t i02 = tgpig[1]; - const int64_t i01 = tgpig[0]; - - const int64_t n = i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00; - - const int64_t i3 = n / (ne2*ne1*ne0); - const int64_t i2 = (n - i3*ne2*ne1*ne0) / (ne1*ne0); - const int64_t i1 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0) / ne0; - const int64_t i0 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0 - i1*ne0); - - device half * dst_data = (device half *) ((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); - - for (int64_t i00 = tpitg.x; i00 < ne00; i00 += ntg.x) { - device const float * src = (device float *)((device char *) src0 + i03*nb03 + i02*nb02 + i01*nb01 + i00*nb00); - - dst_data[i00] = src[0]; - } -} - -kernel void kernel_cpy_f32_f32( - device const float * src0, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - uint3 tgpig[[threadgroup_position_in_grid]], - uint3 tpitg[[thread_position_in_threadgroup]], - uint3 ntg[[threads_per_threadgroup]]) { - const int64_t i03 = tgpig[2]; - const int64_t i02 = tgpig[1]; - const int64_t i01 = tgpig[0]; - - const int64_t n = i03*ne02*ne01*ne00 + i02*ne01*ne00 + i01*ne00; - - const int64_t i3 = n / (ne2*ne1*ne0); - const int64_t i2 = (n - i3*ne2*ne1*ne0) / (ne1*ne0); - const int64_t i1 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0) / ne0; - const int64_t i0 = (n - i3*ne2*ne1*ne0 - i2*ne1*ne0 - i1*ne0); - - device float * dst_data = (device float *) ((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); - - for (int64_t i00 = tpitg.x; i00 < ne00; i00 += ntg.x) { - device const float * src = (device float *)((device char *) src0 + i03*nb03 + i02*nb02 + i01*nb01 + i00*nb00); - - dst_data[i00] = src[0]; - } -} - -kernel void kernel_concat( - device const char * src0, - device const char * src1, - device char * dst, - constant int64_t & ne00, - constant int64_t & ne01, - constant int64_t & ne02, - constant int64_t & ne03, - constant uint64_t & nb00, - constant uint64_t & nb01, - constant uint64_t & nb02, - constant uint64_t & nb03, - constant int64_t & ne10, - constant int64_t & ne11, - constant int64_t & ne12, - constant int64_t & ne13, - constant uint64_t & nb10, - constant uint64_t & nb11, - constant uint64_t & nb12, - constant uint64_t & nb13, - constant int64_t & ne0, - constant int64_t & ne1, - constant int64_t & ne2, - constant int64_t & ne3, - constant uint64_t & nb0, - constant uint64_t & nb1, - constant uint64_t & nb2, - constant uint64_t & nb3, - uint3 tgpig[[threadgroup_position_in_grid]], - uint3 tpitg[[thread_position_in_threadgroup]], - uint3 ntg[[threads_per_threadgroup]]) { - - const int64_t i03 = tgpig.z; - const int64_t i02 = tgpig.y; - const int64_t i01 = tgpig.x; - - const int64_t i13 = i03 % ne13; - const int64_t i12 = i02 % ne12; - const int64_t i11 = i01 % ne11; - - device const char * src0_ptr = src0 + i03 * nb03 + i02 * nb02 + i01 * nb01 + tpitg.x*nb00; - device const char * src1_ptr = src1 + i13*nb13 + i12*nb12 + i11*nb11 + tpitg.x*nb10; - device char * dst_ptr = dst + i03*nb3 + i02*nb2 + i01*nb1 + tpitg.x*nb0; - - for (int i0 = tpitg.x; i0 < ne0; i0 += ntg.x) { - if (i02 < ne02) { - ((device float *)dst_ptr)[0] = ((device float *)src0_ptr)[0]; - src0_ptr += ntg.x*nb00; - } else { - ((device float *)dst_ptr)[0] = ((device float *)src1_ptr)[0]; - src1_ptr += ntg.x*nb10; - } - dst_ptr += ntg.x*nb0; - } -} - -//============================================ k-quants ====================================================== - -#ifndef QK_K -#define QK_K 256 -#else -static_assert(QK_K == 256 || QK_K == 64, "QK_K must be 256 or 64"); -#endif - -#if QK_K == 256 -#define K_SCALE_SIZE 12 -#else -#define K_SCALE_SIZE 4 -#endif - -typedef struct { - uint8_t scales[QK_K/16]; // scales and mins, quantized with 4 bits - uint8_t qs[QK_K/4]; // quants - half d; // super-block scale for quantized scales - half dmin; // super-block scale for quantized mins -} block_q2_K; -// 84 bytes / block - -typedef struct { - uint8_t hmask[QK_K/8]; // quants - high bit - uint8_t qs[QK_K/4]; // quants - low 2 bits -#if QK_K == 64 - uint8_t scales[2]; -#else - uint8_t scales[K_SCALE_SIZE]; // scales, quantized with 6 bits -#endif - half d; // super-block scale -} block_q3_K; - -#if QK_K == 64 -typedef struct { - half d[2]; // super-block scales/mins - uint8_t scales[2]; - uint8_t qs[QK_K/2]; // 4-bit quants -} block_q4_K; -#else -typedef struct { - half d; // super-block scale for quantized scales - half dmin; // super-block scale for quantized mins - uint8_t scales[K_SCALE_SIZE]; // scales and mins, quantized with 6 bits - uint8_t qs[QK_K/2]; // 4--bit quants -} block_q4_K; -#endif - -#if QK_K == 64 -typedef struct { - half d; // super-block scales/mins - int8_t scales[QK_K/16]; // 8-bit block scales - uint8_t qh[QK_K/8]; // quants, high bit - uint8_t qs[QK_K/2]; // quants, low 4 bits -} block_q5_K; -#else -typedef struct { - half d; // super-block scale for quantized scales - half dmin; // super-block scale for quantized mins - uint8_t scales[3*QK_K/64]; // scales and mins, quantized with 6 bits - uint8_t qh[QK_K/8]; // quants, high bit - uint8_t qs[QK_K/2]; // quants, low 4 bits -} block_q5_K; -// 176 bytes / block -#endif - -typedef struct { - uint8_t ql[QK_K/2]; // quants, lower 4 bits - uint8_t qh[QK_K/4]; // quants, upper 2 bits - int8_t scales[QK_K/16]; // scales, quantized with 8 bits - half d; // super-block scale -} block_q6_K; -// 210 bytes / block - -static inline uchar4 get_scale_min_k4(int j, device const uint8_t * q) { - uchar4 r; - if (j < 4) { - r[0] = q[j+0] & 63; - r[2] = q[j+1] & 63; - r[1] = q[j+4] & 63; - r[3] = q[j+5] & 63; - } else { - r[0] = (q[j+4] & 0xF) | ((q[j-4] >> 6) << 4); - r[2] = (q[j+5] & 0xF) | ((q[j-3] >> 6) << 4); - r[1] = (q[j+4] >> 4) | ((q[j-0] >> 6) << 4); - r[3] = (q[j+5] >> 4) | ((q[j+1] >> 6) << 4); - } - return r; -} - -//====================================== dot products ========================= - -kernel void kernel_mul_mv_q2_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const int nb = ne00/QK_K; - const int r0 = tgpig.x; - const int r1 = tgpig.y; - const int r2 = tgpig.z; - - const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST; - const int ib_row = first_row * nb; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q2_K * x = (device const block_q2_K *) src0 + ib_row + offset0; - device const float * y = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - float yl[32]; - float sumf[N_DST]={0.f}, all_sum; - - const int step = sizeof(block_q2_K) * nb; - -#if QK_K == 256 - const int ix = tiisg/8; // 0...3 - const int it = tiisg%8; // 0...7 - const int im = it/4; // 0 or 1 - const int ir = it%4; // 0...3 - const int is = (8*ir)/16;// 0 or 1 - - device const float * y4 = y + ix * QK_K + 128 * im + 8 * ir; - - for (int ib = ix; ib < nb; ib += 4) { - - float4 sumy = {0.f, 0.f, 0.f, 0.f}; - for (int i = 0; i < 8; ++i) { - yl[i+ 0] = y4[i+ 0]; sumy[0] += yl[i+ 0]; - yl[i+ 8] = y4[i+32]; sumy[1] += yl[i+ 8]; - yl[i+16] = y4[i+64]; sumy[2] += yl[i+16]; - yl[i+24] = y4[i+96]; sumy[3] += yl[i+24]; - } - - device const uint8_t * sc = (device const uint8_t *)x[ib].scales + 8*im + is; - device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 16 * im + 4 * ir; - device const half * dh = &x[ib].d; - - for (int row = 0; row < N_DST; row++) { - - float4 acc1 = {0.f, 0.f, 0.f, 0.f}; - float4 acc2 = {0.f, 0.f, 0.f, 0.f}; - for (int i = 0; i < 8; i += 2) { - acc1[0] += yl[i+ 0] * (qs[i/2] & 0x0003); - acc2[0] += yl[i+ 1] * (qs[i/2] & 0x0300); - acc1[1] += yl[i+ 8] * (qs[i/2] & 0x000c); - acc2[1] += yl[i+ 9] * (qs[i/2] & 0x0c00); - acc1[2] += yl[i+16] * (qs[i/2] & 0x0030); - acc2[2] += yl[i+17] * (qs[i/2] & 0x3000); - acc1[3] += yl[i+24] * (qs[i/2] & 0x00c0); - acc2[3] += yl[i+25] * (qs[i/2] & 0xc000); - } - float dall = dh[0]; - float dmin = dh[1] * 1.f/16.f; - sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc2[0]) * (sc[0] & 0xF) * 1.f/ 1.f + - (acc1[1] + 1.f/256.f * acc2[1]) * (sc[2] & 0xF) * 1.f/ 4.f + - (acc1[2] + 1.f/256.f * acc2[2]) * (sc[4] & 0xF) * 1.f/16.f + - (acc1[3] + 1.f/256.f * acc2[3]) * (sc[6] & 0xF) * 1.f/64.f) - - dmin * (sumy[0] * (sc[0] & 0xF0) + sumy[1] * (sc[2] & 0xF0) + sumy[2] * (sc[4] & 0xF0) + sumy[3] * (sc[6] & 0xF0)); - - qs += step/2; - sc += step; - dh += step/2; - } - - y4 += 4 * QK_K; - } -#else - const int ix = tiisg/2; // 0...15 - const int it = tiisg%2; // 0...1 - - device const float * y4 = y + ix * QK_K + 8 * it; - - for (int ib = ix; ib < nb; ib += 16) { - - float4 sumy = {0.f, 0.f, 0.f, 0.f}; - for (int i = 0; i < 8; ++i) { - yl[i+ 0] = y4[i+ 0]; sumy[0] += yl[i+ 0]; - yl[i+ 8] = y4[i+16]; sumy[1] += yl[i+ 8]; - yl[i+16] = y4[i+32]; sumy[2] += yl[i+16]; - yl[i+24] = y4[i+48]; sumy[3] += yl[i+24]; - } - - device const uint8_t * sc = (device const uint8_t *)x[ib].scales; - device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 4 * it; - device const half * dh = &x[ib].d; - - for (int row = 0; row < N_DST; row++) { - - float4 acc1 = {0.f, 0.f, 0.f, 0.f}; - float4 acc2 = {0.f, 0.f, 0.f, 0.f}; - for (int i = 0; i < 8; i += 2) { - acc1[0] += yl[i+ 0] * (qs[i/2] & 0x0003); - acc2[0] += yl[i+ 1] * (qs[i/2] & 0x0300); - acc1[1] += yl[i+ 8] * (qs[i/2] & 0x000c); - acc2[1] += yl[i+ 9] * (qs[i/2] & 0x0c00); - acc1[2] += yl[i+16] * (qs[i/2] & 0x0030); - acc2[2] += yl[i+17] * (qs[i/2] & 0x3000); - acc1[3] += yl[i+24] * (qs[i/2] & 0x00c0); - acc2[3] += yl[i+25] * (qs[i/2] & 0xc000); - } - - float dall = dh[0]; - float dmin = dh[1]; - sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc2[0]) * (sc[0] & 0xF) * 1.f/ 1.f + - (acc1[1] + 1.f/256.f * acc2[1]) * (sc[1] & 0xF) * 1.f/ 4.f + - (acc1[2] + 1.f/256.f * acc2[2]) * (sc[2] & 0xF) * 1.f/16.f + - (acc1[3] + 1.f/256.f * acc2[3]) * (sc[3] & 0xF) * 1.f/64.f) - - dmin * (sumy[0] * (sc[0] >> 4) + sumy[1] * (sc[1] >> 4) + sumy[2] * (sc[2] >> 4) + sumy[3] * (sc[3] >> 4)); - - qs += step/2; - sc += step; - dh += step/2; - } - - y4 += 16 * QK_K; - } -#endif - - for (int row = 0; row < N_DST; ++row) { - all_sum = simd_sum(sumf[row]); - if (tiisg == 0) { - dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = all_sum; - } - } -} - -#if QK_K == 256 -kernel void kernel_mul_mv_q3_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const int nb = ne00/QK_K; - - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; - const int64_t r2 = tgpig.z; - - const int first_row = (r0 * N_SIMDGROUP + sgitg) * 2; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q3_K * x = (device const block_q3_K *) src0 + first_row*nb + offset0; - device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - - float yl[32]; - - //const uint16_t kmask1 = 0x3030; - //const uint16_t kmask2 = 0x0f0f; - - const int tid = tiisg/4; - const int ix = tiisg%4; - const int ip = tid/4; // 0 or 1 - const int il = 2*((tid%4)/2); // 0 or 2 - const int ir = tid%2; - const int n = 8; - const int l0 = n*ir; - - // One would think that the Metal compiler would figure out that ip and il can only have - // 4 possible states, and optimize accordingly. Well, no. It needs help, and we do it - // with these two tales. - // - // Possible masks for the high bit - const ushort4 mm[4] = {{0x0001, 0x0100, 0x0002, 0x0200}, // ip = 0, il = 0 - {0x0004, 0x0400, 0x0008, 0x0800}, // ip = 0, il = 2 - {0x0010, 0x1000, 0x0020, 0x2000}, // ip = 1, il = 0 - {0x0040, 0x4000, 0x0080, 0x8000}}; // ip = 1, il = 2 - - // Possible masks for the low 2 bits - const int4 qm[2] = {{0x0003, 0x0300, 0x000c, 0x0c00}, {0x0030, 0x3000, 0x00c0, 0xc000}}; - - const ushort4 hm = mm[2*ip + il/2]; - - const int shift = 2*il; - const float v1 = il == 0 ? 4.f : 64.f; - const float v2 = 4.f * v1; - - const uint16_t s_shift1 = 4*ip; - const uint16_t s_shift2 = s_shift1 + il; - - const int q_offset = 32*ip + l0; - const int y_offset = 128*ip + 32*il + l0; - - const int step = sizeof(block_q3_K) * nb / 2; - - device const float * y1 = yy + ix*QK_K + y_offset; - - uint32_t scales32, aux32; - thread uint16_t * scales16 = (thread uint16_t *)&scales32; - thread const int8_t * scales = (thread const int8_t *)&scales32; - - float sumf1[2] = {0.f}; - float sumf2[2] = {0.f}; - for (int i = ix; i < nb; i += 4) { - - for (int l = 0; l < 8; ++l) { - yl[l+ 0] = y1[l+ 0]; - yl[l+ 8] = y1[l+16]; - yl[l+16] = y1[l+32]; - yl[l+24] = y1[l+48]; - } - - device const uint16_t * q = (device const uint16_t *)(x[i].qs + q_offset); - device const uint16_t * h = (device const uint16_t *)(x[i].hmask + l0); - device const uint16_t * a = (device const uint16_t *)(x[i].scales); - device const half * dh = &x[i].d; - - for (int row = 0; row < 2; ++row) { - - const float d_all = (float)dh[0]; - - scales16[0] = a[4]; - scales16[1] = a[5]; - aux32 = ((scales32 >> s_shift2) << 4) & 0x30303030; - scales16[0] = a[il+0]; - scales16[1] = a[il+1]; - scales32 = ((scales32 >> s_shift1) & 0x0f0f0f0f) | aux32; - - float s1 = 0, s2 = 0, s3 = 0, s4 = 0, s5 = 0, s6 = 0; - for (int l = 0; l < n; l += 2) { - const int32_t qs = q[l/2]; - s1 += yl[l+0] * (qs & qm[il/2][0]); - s2 += yl[l+1] * (qs & qm[il/2][1]); - s3 += ((h[l/2] & hm[0]) ? 0.f : yl[l+0]) + ((h[l/2] & hm[1]) ? 0.f : yl[l+1]); - s4 += yl[l+16] * (qs & qm[il/2][2]); - s5 += yl[l+17] * (qs & qm[il/2][3]); - s6 += ((h[l/2] & hm[2]) ? 0.f : yl[l+16]) + ((h[l/2] & hm[3]) ? 0.f : yl[l+17]); - } - float d1 = d_all * (s1 + 1.f/256.f * s2 - s3*v1); - float d2 = d_all * (s4 + 1.f/256.f * s5 - s6*v2); - sumf1[row] += d1 * (scales[0] - 32); - sumf2[row] += d2 * (scales[2] - 32); - - s1 = s2 = s3 = s4 = s5 = s6 = 0; - for (int l = 0; l < n; l += 2) { - const int32_t qs = q[l/2+8]; - s1 += yl[l+8] * (qs & qm[il/2][0]); - s2 += yl[l+9] * (qs & qm[il/2][1]); - s3 += ((h[l/2+8] & hm[0]) ? 0.f : yl[l+8]) + ((h[l/2+8] & hm[1]) ? 0.f : yl[l+9]); - s4 += yl[l+24] * (qs & qm[il/2][2]); - s5 += yl[l+25] * (qs & qm[il/2][3]); - s6 += ((h[l/2+8] & hm[2]) ? 0.f : yl[l+24]) + ((h[l/2+8] & hm[3]) ? 0.f : yl[l+25]); - } - d1 = d_all * (s1 + 1.f/256.f * s2 - s3*v1); - d2 = d_all * (s4 + 1.f/256.f * s5 - s6*v2); - sumf1[row] += d1 * (scales[1] - 32); - sumf2[row] += d2 * (scales[3] - 32); - - q += step; - h += step; - a += step; - dh += step; - - } - - y1 += 4 * QK_K; - - } - - for (int row = 0; row < 2; ++row) { - const float sumf = (sumf1[row] + 0.25f * sumf2[row]) / (1 << shift); - sumf1[row] = simd_sum(sumf); - } - if (tiisg == 0) { - for (int row = 0; row < 2; ++row) { - dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = sumf1[row]; - } - } -} -#else -kernel void kernel_mul_mv_q3_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const int nb = ne00/QK_K; - - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; - const int64_t r2 = tgpig.z; - - const int row = 2 * r0 + sgitg; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q3_K * x = (device const block_q3_K *) src0 + row*nb + offset0; - device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - const int ix = tiisg/4; - const int il = 4 * (tiisg%4);// 0, 4, 8, 12 - const int im = il/8; // 0, 0, 1, 1 - const int in = il%8; // 0, 4, 0, 4 - - float2 sum = {0.f, 0.f}; - - for (int i = ix; i < nb; i += 8) { - - const float d_all = (float)(x[i].d); - - device const uint16_t * q = (device const uint16_t *)(x[i].qs + il); - device const uint16_t * h = (device const uint16_t *)(x[i].hmask + in); - device const uint16_t * s = (device const uint16_t *)(x[i].scales); - device const float * y = yy + i * QK_K + il; - - const float d1 = d_all * ((int32_t)(s[0] & 0x000F) - 8); - const float d2 = d_all * ((int32_t)(s[0] & 0x00F0) - 128) * 1.f/64.f; - const float d3 = d_all * ((int32_t)(s[0] & 0x0F00) - 2048) * 1.f/4096.f; - const float d4 = d_all * ((int32_t)(s[0] & 0xF000) - 32768) * 1.f/262144.f; - - for (int l = 0; l < 4; l += 2) { - const uint16_t hm = h[l/2] >> im; - sum[0] += y[l+ 0] * d1 * ((int32_t)(q[l/2] & 0x0003) - ((hm & 0x0001) ? 0 : 4)) - + y[l+16] * d2 * ((int32_t)(q[l/2] & 0x000c) - ((hm & 0x0004) ? 0 : 16)) - + y[l+32] * d3 * ((int32_t)(q[l/2] & 0x0030) - ((hm & 0x0010) ? 0 : 64)) - + y[l+48] * d4 * ((int32_t)(q[l/2] & 0x00c0) - ((hm & 0x0040) ? 0 : 256)); - sum[1] += y[l+ 1] * d1 * ((int32_t)(q[l/2] & 0x0300) - ((hm & 0x0100) ? 0 : 1024)) - + y[l+17] * d2 * ((int32_t)(q[l/2] & 0x0c00) - ((hm & 0x0400) ? 0 : 4096)) - + y[l+33] * d3 * ((int32_t)(q[l/2] & 0x3000) - ((hm & 0x1000) ? 0 : 16384)) - + y[l+49] * d4 * ((int32_t)(q[l/2] & 0xc000) - ((hm & 0x4000) ? 0 : 65536)); - } - - } - const float sumf = sum[0] + sum[1] * 1.f/256.f; - - const float tot = simd_sum(sumf); - if (tiisg == 0) { - dst[r1*ne0 + r2*ne0*ne1 + row] = tot; - } - -} -#endif - -#if QK_K == 256 -kernel void kernel_mul_mv_q4_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01 [[buffer(4)]], - constant int64_t & ne02 [[buffer(5)]], - constant int64_t & ne10 [[buffer(9)]], - constant int64_t & ne12 [[buffer(11)]], - constant int64_t & ne0 [[buffer(15)]], - constant int64_t & ne1 [[buffer(16)]], - constant uint & gqa [[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const uint16_t kmask1 = 0x3f3f; - const uint16_t kmask2 = 0x0f0f; - const uint16_t kmask3 = 0xc0c0; - - const int ix = tiisg/8; // 0...3 - const int it = tiisg%8; // 0...7 - const int im = it/4; // 0 or 1 - const int ir = it%4; // 0...3 - - const int nb = ne00/QK_K; - const int r0 = tgpig.x; - const int r1 = tgpig.y; - const int r2 = tgpig.z; - //const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST; - const int first_row = r0 * N_DST; - const int ib_row = first_row * nb; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q4_K * x = (device const block_q4_K *) src0 + ib_row + offset0; - device const float * y = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - float yl[16]; - float yh[16]; - float sumf[N_DST]={0.f}, all_sum; - - const int step = sizeof(block_q4_K) * nb / 2; - - device const float * y4 = y + ix * QK_K + 64 * im + 8 * ir; - - uint16_t sc16[4]; - thread const uint8_t * sc8 = (thread const uint8_t *)sc16; - - for (int ib = ix; ib < nb; ib += 4) { - - float4 sumy = {0.f, 0.f, 0.f, 0.f}; - for (int i = 0; i < 8; ++i) { - yl[i+0] = y4[i+ 0]; sumy[0] += yl[i+0]; - yl[i+8] = y4[i+ 32]; sumy[1] += yl[i+8]; - yh[i+0] = y4[i+128]; sumy[2] += yh[i+0]; - yh[i+8] = y4[i+160]; sumy[3] += yh[i+8]; - } - - device const uint16_t * sc = (device const uint16_t *)x[ib].scales + im; - device const uint16_t * q1 = (device const uint16_t *)x[ib].qs + 16 * im + 4 * ir; - device const half * dh = &x[ib].d; - - for (int row = 0; row < N_DST; row++) { - - sc16[0] = sc[0] & kmask1; - sc16[1] = sc[2] & kmask1; - sc16[2] = ((sc[4] >> 0) & kmask2) | ((sc[0] & kmask3) >> 2); - sc16[3] = ((sc[4] >> 4) & kmask2) | ((sc[2] & kmask3) >> 2); - - device const uint16_t * q2 = q1 + 32; - - float4 acc1 = {0.f, 0.f, 0.f, 0.f}; - float4 acc2 = {0.f, 0.f, 0.f, 0.f}; - for (int i = 0; i < 8; i += 2) { - acc1[0] += yl[i+0] * (q1[i/2] & 0x000F); - acc1[1] += yl[i+1] * (q1[i/2] & 0x0F00); - acc1[2] += yl[i+8] * (q1[i/2] & 0x00F0); - acc1[3] += yl[i+9] * (q1[i/2] & 0xF000); - acc2[0] += yh[i+0] * (q2[i/2] & 0x000F); - acc2[1] += yh[i+1] * (q2[i/2] & 0x0F00); - acc2[2] += yh[i+8] * (q2[i/2] & 0x00F0); - acc2[3] += yh[i+9] * (q2[i/2] & 0xF000); - } - - float dall = dh[0]; - float dmin = dh[1]; - sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc1[1]) * sc8[0] + - (acc1[2] + 1.f/256.f * acc1[3]) * sc8[1] * 1.f/16.f + - (acc2[0] + 1.f/256.f * acc2[1]) * sc8[4] + - (acc2[2] + 1.f/256.f * acc2[3]) * sc8[5] * 1.f/16.f) - - dmin * (sumy[0] * sc8[2] + sumy[1] * sc8[3] + sumy[2] * sc8[6] + sumy[3] * sc8[7]); - - q1 += step; - sc += step; - dh += step; - } - - y4 += 4 * QK_K; - } - - for (int row = 0; row < N_DST; ++row) { - all_sum = simd_sum(sumf[row]); - if (tiisg == 0) { - dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = all_sum; - } - } -} -#else -kernel void kernel_mul_mv_q4_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const int ix = tiisg/4; // 0...7 - const int it = tiisg%4; // 0...3 - - const int nb = ne00/QK_K; - const int r0 = tgpig.x; - const int r1 = tgpig.y; - const int r2 = tgpig.z; - const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST; - const int ib_row = first_row * nb; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q4_K * x = (device const block_q4_K *) src0 + ib_row + offset0; - device const float * y = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - float yl[8]; - float yh[8]; - float sumf[N_DST]={0.f}, all_sum; - - const int step = sizeof(block_q4_K) * nb / 2; - - device const float * y4 = y + ix * QK_K + 8 * it; - - uint16_t sc16[4]; - - for (int ib = ix; ib < nb; ib += 8) { - - float2 sumy = {0.f, 0.f}; - for (int i = 0; i < 8; ++i) { - yl[i] = y4[i+ 0]; sumy[0] += yl[i]; - yh[i] = y4[i+32]; sumy[1] += yh[i]; - } - - device const uint16_t * sc = (device const uint16_t *)x[ib].scales; - device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 4 * it; - device const half * dh = x[ib].d; - - for (int row = 0; row < N_DST; row++) { - - sc16[0] = sc[0] & 0x000f; - sc16[1] = sc[0] & 0x0f00; - sc16[2] = sc[0] & 0x00f0; - sc16[3] = sc[0] & 0xf000; - - float2 acc1 = {0.f, 0.f}; - float2 acc2 = {0.f, 0.f}; - for (int i = 0; i < 8; i += 2) { - acc1[0] += yl[i+0] * (qs[i/2] & 0x000F); - acc1[1] += yl[i+1] * (qs[i/2] & 0x0F00); - acc2[0] += yh[i+0] * (qs[i/2] & 0x00F0); - acc2[1] += yh[i+1] * (qs[i/2] & 0xF000); - } - - float dall = dh[0]; - float dmin = dh[1]; - sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc1[1]) * sc16[0] + - (acc2[0] + 1.f/256.f * acc2[1]) * sc16[1] * 1.f/4096.f) - - dmin * 1.f/16.f * (sumy[0] * sc16[2] + sumy[1] * sc16[3] * 1.f/256.f); - - qs += step; - sc += step; - dh += step; - } - - y4 += 8 * QK_K; - } - - for (int row = 0; row < N_DST; ++row) { - all_sum = simd_sum(sumf[row]); - if (tiisg == 0) { - dst[r1*ne0+ r2*ne0*ne1 + first_row + row] = all_sum; - } - } -} -#endif - -kernel void kernel_mul_mv_q5_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const int nb = ne00/QK_K; - - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; - const int r2 = tgpig.z; - - const int first_row = (r0 * N_SIMDGROUP + sgitg) * 2; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q5_K * x = (device const block_q5_K *) src0 + first_row*nb + offset0; - device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - - float sumf[2]={0.f}; - - const int step = sizeof(block_q5_K) * nb; - -#if QK_K == 256 -# - float yl[16], yh[16]; - - const uint16_t kmask1 = 0x3f3f; - const uint16_t kmask2 = 0x0f0f; - const uint16_t kmask3 = 0xc0c0; - - const int tid = tiisg/4; - const int ix = tiisg%4; - const int im = tid/4; - const int ir = tid%4; - const int n = 8; - - const int l0 = n*ir; - const int q_offset = 32*im + l0; - const int y_offset = 64*im + l0; - - const uint8_t hm1 = 1u << (2*im); - const uint8_t hm2 = hm1 << 1; - const uint8_t hm3 = hm1 << 4; - const uint8_t hm4 = hm2 << 4; - - uint16_t sc16[4]; - thread const uint8_t * sc8 = (thread const uint8_t *)sc16; - - device const float * y1 = yy + ix*QK_K + y_offset; - - for (int i = ix; i < nb; i += 4) { - - device const uint8_t * q1 = x[i].qs + q_offset; - device const uint8_t * qh = x[i].qh + l0; - device const half * dh = &x[i].d; - device const uint16_t * a = (device const uint16_t *)x[i].scales + im; - - device const float * y2 = y1 + 128; - float4 sumy = {0.f, 0.f, 0.f, 0.f}; - for (int l = 0; l < 8; ++l) { - yl[l+0] = y1[l+ 0]; sumy[0] += yl[l+0]; - yl[l+8] = y1[l+32]; sumy[1] += yl[l+8]; - yh[l+0] = y2[l+ 0]; sumy[2] += yh[l+0]; - yh[l+8] = y2[l+32]; sumy[3] += yh[l+8]; - } - - for (int row = 0; row < 2; ++row) { - - device const uint8_t * q2 = q1 + 64; - - sc16[0] = a[0] & kmask1; - sc16[1] = a[2] & kmask1; - sc16[2] = ((a[4] >> 0) & kmask2) | ((a[0] & kmask3) >> 2); - sc16[3] = ((a[4] >> 4) & kmask2) | ((a[2] & kmask3) >> 2); - - float4 acc1 = {0.f}; - float4 acc2 = {0.f}; - for (int l = 0; l < n; ++l) { - uint8_t h = qh[l]; - acc1[0] += yl[l+0] * (q1[l] & 0x0F); - acc1[1] += yl[l+8] * (q1[l] & 0xF0); - acc1[2] += yh[l+0] * (q2[l] & 0x0F); - acc1[3] += yh[l+8] * (q2[l] & 0xF0); - acc2[0] += h & hm1 ? yl[l+0] : 0.f; - acc2[1] += h & hm2 ? yl[l+8] : 0.f; - acc2[2] += h & hm3 ? yh[l+0] : 0.f; - acc2[3] += h & hm4 ? yh[l+8] : 0.f; - } - const float dall = dh[0]; - const float dmin = dh[1]; - sumf[row] += dall * (sc8[0] * (acc1[0] + 16.f*acc2[0]) + - sc8[1] * (acc1[1]/16.f + 16.f*acc2[1]) + - sc8[4] * (acc1[2] + 16.f*acc2[2]) + - sc8[5] * (acc1[3]/16.f + 16.f*acc2[3])) - - dmin * (sumy[0] * sc8[2] + sumy[1] * sc8[3] + sumy[2] * sc8[6] + sumy[3] * sc8[7]); - - q1 += step; - qh += step; - dh += step/2; - a += step/2; - - } - - y1 += 4 * QK_K; - - } -#else - float yl[8], yh[8]; - - const int il = 4 * (tiisg/8); // 0, 4, 8, 12 - const int ix = tiisg%8; - const int im = il/8; // 0, 0, 1, 1 - const int in = il%8; // 0, 4, 0, 4 - - device const float * y = yy + ix*QK_K + il; - - for (int i = ix; i < nb; i += 8) { - - for (int l = 0; l < 4; ++l) { - yl[l+0] = y[l+ 0]; - yl[l+4] = y[l+16]; - yh[l+0] = y[l+32]; - yh[l+4] = y[l+48]; - } - - device const half * dh = &x[i].d; - device const uint8_t * q = x[i].qs + il; - device const uint8_t * h = x[i].qh + in; - device const int8_t * s = x[i].scales; - - for (int row = 0; row < 2; ++row) { - - const float d = dh[0]; - - float2 acc = {0.f, 0.f}; - for (int l = 0; l < 4; ++l) { - const uint8_t hl = h[l] >> im; - acc[0] += yl[l+0] * s[0] * ((int16_t)(q[l+ 0] & 0x0F) - (hl & 0x01 ? 0 : 16)) - + yl[l+4] * s[1] * ((int16_t)(q[l+16] & 0x0F) - (hl & 0x04 ? 0 : 16)); - acc[1] += yh[l+0] * s[2] * ((int16_t)(q[l+ 0] & 0xF0) - (hl & 0x10 ? 0 : 256)) - + yh[l+4] * s[3] * ((int16_t)(q[l+16] & 0xF0) - (hl & 0x40 ? 0 : 256)); - } - sumf[row] += d * (acc[0] + 1.f/16.f * acc[1]); - - q += step; - h += step; - s += step; - dh += step/2; - - } - - y += 8 * QK_K; - } -#endif - - for (int row = 0; row < 2; ++row) { - const float tot = simd_sum(sumf[row]); - if (tiisg == 0) { - dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = tot; - } - } - -} - -kernel void kernel_mul_mv_q6_K_f32( - device const void * src0, - device const float * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne01[[buffer(4)]], - constant int64_t & ne02[[buffer(5)]], - constant int64_t & ne10[[buffer(9)]], - constant int64_t & ne12[[buffer(11)]], - constant int64_t & ne0[[buffer(15)]], - constant int64_t & ne1[[buffer(16)]], - constant uint & gqa[[buffer(17)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiisg[[thread_index_in_simdgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - const uint8_t kmask1 = 0x03; - const uint8_t kmask2 = 0x0C; - const uint8_t kmask3 = 0x30; - const uint8_t kmask4 = 0xC0; - - const int nb = ne00/QK_K; - - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; - const int r2 = tgpig.z; - - const int row = 2 * r0 + sgitg; - const uint offset0 = r2/gqa*(nb*ne0); - device const block_q6_K * x = (device const block_q6_K *) src0 + row * nb + offset0; - device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - - float sumf = 0; - -#if QK_K == 256 - const int tid = tiisg/2; - const int ix = tiisg%2; - const int ip = tid/8; // 0 or 1 - const int il = tid%8; - const int n = 4; - const int l0 = n*il; - const int is = 8*ip + l0/16; - - const int y_offset = 128*ip + l0; - const int q_offset_l = 64*ip + l0; - const int q_offset_h = 32*ip + l0; - - for (int i = ix; i < nb; i += 2) { - - device const uint8_t * q1 = x[i].ql + q_offset_l; - device const uint8_t * q2 = q1 + 32; - device const uint8_t * qh = x[i].qh + q_offset_h; - device const int8_t * sc = x[i].scales + is; - - device const float * y = yy + i * QK_K + y_offset; - - const float dall = x[i].d; - - float4 sums = {0.f, 0.f, 0.f, 0.f}; - for (int l = 0; l < n; ++l) { - sums[0] += y[l+ 0] * ((int8_t)((q1[l] & 0xF) | ((qh[l] & kmask1) << 4)) - 32); - sums[1] += y[l+32] * ((int8_t)((q2[l] & 0xF) | ((qh[l] & kmask2) << 2)) - 32); - sums[2] += y[l+64] * ((int8_t)((q1[l] >> 4) | ((qh[l] & kmask3) << 0)) - 32); - sums[3] += y[l+96] * ((int8_t)((q2[l] >> 4) | ((qh[l] & kmask4) >> 2)) - 32); - } - - sumf += dall * (sums[0] * sc[0] + sums[1] * sc[2] + sums[2] * sc[4] + sums[3] * sc[6]); - - } - -#else - const int ix = tiisg/4; - const int il = 4*(tiisg%4); - - for (int i = ix; i < nb; i += 8) { - device const float * y = yy + i * QK_K + il; - device const uint8_t * ql = x[i].ql + il; - device const uint8_t * qh = x[i].qh + il; - device const int8_t * s = x[i].scales; - - const float d = x[i].d; - - float4 sums = {0.f, 0.f, 0.f, 0.f}; - for (int l = 0; l < 4; ++l) { - sums[0] += y[l+ 0] * ((int8_t)((ql[l+ 0] & 0xF) | ((qh[l] & kmask1) << 4)) - 32); - sums[1] += y[l+16] * ((int8_t)((ql[l+16] & 0xF) | ((qh[l] & kmask2) << 2)) - 32); - sums[2] += y[l+32] * ((int8_t)((ql[l+ 0] >> 4) | ((qh[l] & kmask3) >> 0)) - 32); - sums[3] += y[l+48] * ((int8_t)((ql[l+16] >> 4) | ((qh[l] & kmask4) >> 2)) - 32); - } - sumf += d * (sums[0] * s[0] + sums[1] * s[1] + sums[2] * s[2] + sums[3] * s[3]); - } - -#endif - - const float tot = simd_sum(sumf); - if (tiisg == 0) { - dst[r1*ne0 + r2*ne0*ne1 + row] = tot; - } -} - -//============================= templates and their specializations ============================= - -// NOTE: this is not dequantizing - we are simply fitting the template -template -void dequantize_f32(device const float4x4 * src, short il, thread type4x4 & reg) { - float4x4 temp = *(((device float4x4 *)src)); - for (int i = 0; i < 16; i++){ - reg[i/4][i%4] = temp[i/4][i%4]; - } -} - -template -void dequantize_f16(device const half4x4 * src, short il, thread type4x4 & reg) { - half4x4 temp = *(((device half4x4 *)src)); - for (int i = 0; i < 16; i++){ - reg[i/4][i%4] = temp[i/4][i%4]; - } -} - -template -void dequantize_q4_0(device const block_q4_0 *xb, short il, thread type4x4 & reg) { - device const uint16_t * qs = ((device const uint16_t *)xb + 1); - const float d1 = il ? (xb->d / 16.h) : xb->d; - const float d2 = d1 / 256.f; - const float md = -8.h * xb->d; - const ushort mask0 = il ? 0x00F0 : 0x000F; - const ushort mask1 = mask0 << 8; - - for (int i=0;i<8;i++) { - reg[i/2][2*(i%2)+0] = d1 * (qs[i] & mask0) + md; - reg[i/2][2*(i%2)+1] = d2 * (qs[i] & mask1) + md; - } -} - -template -void dequantize_q4_1(device const block_q4_1 *xb, short il, thread type4x4 & reg) { - device const uint16_t * qs = ((device const uint16_t *)xb + 2); - const float d1 = il ? (xb->d / 16.h) : xb->d; - const float d2 = d1 / 256.f; - const float m = xb->m; - const ushort mask0 = il ? 0x00F0 : 0x000F; - const ushort mask1 = mask0 << 8; - - for (int i=0;i<8;i++) { - reg[i/2][2*(i%2)+0] = ((qs[i] & mask0) * d1) + m; - reg[i/2][2*(i%2)+1] = ((qs[i] & mask1) * d2) + m; - } -} - -template -void dequantize_q5_0(device const block_q5_0 *xb, short il, thread type4x4 & reg) { - device const uint16_t * qs = ((device const uint16_t *)xb + 3); - const float d = xb->d; - const float md = -16.h * xb->d; - const ushort mask = il ? 0x00F0 : 0x000F; - - const uint32_t qh = *((device const uint32_t *)xb->qh); - - const int x_mv = il ? 4 : 0; - - const int gh_mv = il ? 12 : 0; - const int gh_bk = il ? 0 : 4; - - for (int i = 0; i < 8; i++) { - // extract the 5-th bits for x0 and x1 - const uint8_t xh_0 = ((qh >> (gh_mv + 2*i )) << gh_bk) & 0x10; - const uint8_t xh_1 = ((qh >> (gh_mv + 2*i+1)) << gh_bk) & 0x10; - - // combine the 4-bits from qs with the 5th bit - const int32_t x0 = ((((qs[i] ) & mask) >> x_mv) | xh_0); - const int32_t x1 = ((((qs[i] >> 8) & mask) >> x_mv) | xh_1); - - reg[i/2][2*(i%2)+0] = d * x0 + md; - reg[i/2][2*(i%2)+1] = d * x1 + md; - } -} - -template -void dequantize_q5_1(device const block_q5_1 *xb, short il, thread type4x4 & reg) { - device const uint16_t * qs = ((device const uint16_t *)xb + 4); - const float d = xb->d; - const float m = xb->m; - const ushort mask = il ? 0x00F0 : 0x000F; - - const uint32_t qh = *((device const uint32_t *)xb->qh); - - const int x_mv = il ? 4 : 0; - - const int gh_mv = il ? 12 : 0; - const int gh_bk = il ? 0 : 4; - - for (int i = 0; i < 8; i++) { - // extract the 5-th bits for x0 and x1 - const uint8_t xh_0 = ((qh >> (gh_mv + 2*i )) << gh_bk) & 0x10; - const uint8_t xh_1 = ((qh >> (gh_mv + 2*i+1)) << gh_bk) & 0x10; - - // combine the 4-bits from qs with the 5th bit - const int32_t x0 = ((((qs[i] ) & mask) >> x_mv) | xh_0); - const int32_t x1 = ((((qs[i] >> 8) & mask) >> x_mv) | xh_1); - - reg[i/2][2*(i%2)+0] = d * x0 + m; - reg[i/2][2*(i%2)+1] = d * x1 + m; - } -} - -template -void dequantize_q8_0(device const block_q8_0 *xb, short il, thread type4x4 & reg) { - device const int8_t * qs = ((device const int8_t *)xb->qs); - const half d = xb->d; - - for (int i=0;i<16;i++) { - reg[i/4][i%4] = (qs[i + 16*il] * d); - } -} - -template -void dequantize_q2_K(device const block_q2_K *xb, short il, thread type4x4 & reg) { - const half d = xb->d; - const half min = xb->dmin; - device const uint8_t * q = (device const uint8_t *)xb->qs; - half dl, ml; - uint8_t sc = xb->scales[il]; - -#if QK_K == 256 - q = q + 32*(il/8) + 16*(il&1); - il = (il/2)%4; -#endif - half coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h); - uchar mask = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); - dl = d * (sc & 0xF) * coef, ml = min * (sc >> 4); - for (int i = 0; i < 16; ++i) { - reg[i/4][i%4] = dl * (q[i] & mask) - ml; - } -} - -template -void dequantize_q3_K(device const block_q3_K *xb, short il, thread type4x4 & reg) { - const half d_all = xb->d; - device const uint8_t * q = (device const uint8_t *)xb->qs; - device const uint8_t * h = (device const uint8_t *)xb->hmask; - device const int8_t * scales = (device const int8_t *)xb->scales; - -#if QK_K == 256 - q = q + 32 * (il/8) + 16 * (il&1); - h = h + 16 * (il&1); - uint8_t m = 1 << (il/2); - uint16_t kmask1 = (il/4)>1 ? ((il/4)>2 ? 192 : 48) : \ - ((il/4)>0 ? 12 : 3); - uint16_t kmask2 = il/8 ? 0xF0 : 0x0F; - uint16_t scale_2 = scales[il%8], scale_1 = scales[8 + il%4]; - int16_t dl_int = (il/4)&1 ? (scale_2&kmask2) | ((scale_1&kmask1) << 2) - : (scale_2&kmask2) | ((scale_1&kmask1) << 4); - half dl = il<8 ? d_all * (dl_int - 32.h) : d_all * (dl_int / 16.h - 32.h); - const half ml = 4.h * dl; - - il = (il/2) & 3; - const half coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h); - const uint8_t mask = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); - dl *= coef; - - for (int i = 0; i < 16; ++i) { - reg[i/4][i%4] = dl * (q[i] & mask) - (h[i] & m ? 0 : ml); - } -#else - float kcoef = il&1 ? 1.f/16.f : 1.f; - uint16_t kmask = il&1 ? 0xF0 : 0x0F; - float dl = d_all * ((scales[il/2] & kmask) * kcoef - 8); - float coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h); - uint8_t mask = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); - uint8_t m = 1<<(il*2); - for (int i = 0; i < 16; ++i) { - reg[i/4][i%4] = coef * dl * ((q[i] & mask) - ((h[i%8] & (m * (1 + i/8))) ? 0 : 4.f/coef)); - } -#endif -} - -static inline uchar2 get_scale_min_k4_just2(int j, int k, device const uchar * q) { - return j < 4 ? uchar2{uchar(q[j+0+k] & 63), uchar(q[j+4+k] & 63)} - : uchar2{uchar((q[j+4+k] & 0xF) | ((q[j-4+k] & 0xc0) >> 2)), uchar((q[j+4+k] >> 4) | ((q[j-0+k] & 0xc0) >> 2))}; -} - -template -void dequantize_q4_K(device const block_q4_K *xb, short il, thread type4x4 & reg) { - device const uchar * q = xb->qs; - -#if QK_K == 256 - short is = (il/4) * 2; - q = q + (il/4) * 32 + 16 * (il&1); - il = il & 3; - const uchar2 sc = get_scale_min_k4_just2(is, il/2, xb->scales); - const half d = il < 2 ? xb->d : xb->d / 16.h; - const half min = xb->dmin; - const half dl = d * sc[0]; - const half ml = min * sc[1]; -#else - q = q + 16 * (il&1); - device const uint8_t * s = xb->scales; - device const half2 * dh = (device const half2 *)xb->d; - const float2 d = (float2)dh[0]; - const float dl = il<2 ? d[0] * (s[0]&0xF) : d[0] * (s[1]&0xF)/16.h; - const float ml = il<2 ? d[1] * (s[0]>>4) : d[1] * (s[1]>>4); -#endif - const ushort mask = il<2 ? 0x0F : 0xF0; - for (int i = 0; i < 16; ++i) { - reg[i/4][i%4] = dl * (q[i] & mask) - ml; - } -} - -template -void dequantize_q5_K(device const block_q5_K *xb, short il, thread type4x4 & reg) { - device const uint8_t * q = xb->qs; - device const uint8_t * qh = xb->qh; - -#if QK_K == 256 - short is = (il/4) * 2; - q = q + 32 * (il/4) + 16 * (il&1); - qh = qh + 16 * (il&1); - uint8_t ul = 1 << (il/2); - il = il & 3; - const uchar2 sc = get_scale_min_k4_just2(is, il/2, xb->scales); - const half d = il < 2 ? xb->d : xb->d / 16.h; - const half min = xb->dmin; - const half dl = d * sc[0]; - const half ml = min * sc[1]; - - const ushort mask = il<2 ? 0x0F : 0xF0; - const half qh_val = il<2 ? 16.h : 256.h; - for (int i = 0; i < 16; ++i) { - reg[i/4][i%4] = dl * ((q[i] & mask) + (qh[i] & ul ? qh_val : 0)) - ml; - } -#else - q = q + 16 * (il&1); - device const int8_t * s = xb->scales; - const float dl = xb->d * s[il]; - uint8_t m = 1<<(il*2); - const float coef = il<2 ? 1.f : 1.f/16.f; - const ushort mask = il<2 ? 0x0F : 0xF0; - for (int i = 0; i < 16; ++i) { - reg[i/4][i%4] = coef * dl * ((q[i] & mask) - (qh[i%8] & (m*(1+i/8)) ? 0.f : 16.f/coef)); - } -#endif -} - -template -void dequantize_q6_K(device const block_q6_K *xb, short il, thread type4x4 & reg) { - const half d_all = xb->d; - device const uint8_t * ql = (device const uint8_t *)xb->ql; - device const uint8_t * qh = (device const uint8_t *)xb->qh; - device const int8_t * scales = (device const int8_t *)xb->scales; - -#if QK_K == 256 - ql = ql + 64*(il/8) + 32*((il/2)&1) + 16*(il&1); - qh = qh + 32*(il/8) + 16*(il&1); - half sc = scales[(il%2) + 2 * ((il/2))]; - il = (il/2) & 3; -#else - ql = ql + 16 * (il&1); - half sc = scales[il]; -#endif - const uint16_t kmask1 = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); - const uint16_t kmask2 = il>1 ? 0xF0 : 0x0F; - const half coef = il>1 ? 1.f/16.h : 1.h; - const half ml = d_all * sc * 32.h; - const half dl = d_all * sc * coef; - for (int i = 0; i < 16; ++i) { - const half q = il&1 ? ((ql[i] & kmask2) | ((qh[i] & kmask1) << 2)) - : ((ql[i] & kmask2) | ((qh[i] & kmask1) << 4)); - reg[i/4][i%4] = dl * q - ml; - } -} - -template -kernel void kernel_get_rows( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tgpig[[threadgroup_position_in_grid]], - uint tiitg[[thread_index_in_threadgroup]], - uint tptg[[threads_per_threadgroup]]) { - const int i = tgpig; - const int r = ((device int32_t *) src1)[i]; - - for (int ind = tiitg; ind < ne00/16; ind += tptg) { - float4x4 temp; - dequantize_func( - ((device const block_q *) ((device char *) src0 + r*nb01)) + ind/nl, ind%nl, temp); - *(((device float4x4 *) ((device char *) dst + i*nb1)) + ind) = temp; - } -} - -#define BLOCK_SIZE_M 64 // 8 simdgroup matrices from matrix A -#define BLOCK_SIZE_N 32 // 4 simdgroup matrices from matrix B -#define BLOCK_SIZE_K 32 -#define THREAD_MAT_M 4 // each thread take 4 simdgroup matrices from matrix A -#define THREAD_MAT_N 2 // each thread take 2 simdgroup matrices from matrix B -#define THREAD_PER_BLOCK 128 -#define THREAD_PER_ROW 2 // 2 thread for each row in matrix A to load numbers -#define THREAD_PER_COL 4 // 4 thread for each row in matrix B to load numbers -#define SG_MAT_SIZE 64 // simdgroup matrix is of shape 8x8 -#define SG_MAT_ROW 8 - -// each block_q contains 16*nl weights -template -kernel void kernel_mul_mm(device const uchar * src0, - device const uchar * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne02, - constant int64_t & nb01, - constant int64_t & nb02, - constant int64_t & ne12, - constant int64_t & nb10, - constant int64_t & nb11, - constant int64_t & nb12, - constant int64_t & ne0, - constant int64_t & ne1, - constant uint & gqa, - threadgroup uchar * shared_memory [[threadgroup(0)]], - uint3 tgpig[[threadgroup_position_in_grid]], - uint tiitg[[thread_index_in_threadgroup]], - uint sgitg[[simdgroup_index_in_threadgroup]]) { - - threadgroup half * sa = (threadgroup half *)(shared_memory); - threadgroup float * sb = (threadgroup float *)(shared_memory + 4096); - - const uint r0 = tgpig.y; - const uint r1 = tgpig.x; - const uint im = tgpig.z; - - // if this block is of 64x32 shape or smaller - short n_rows = (ne0 - r0 * BLOCK_SIZE_M < BLOCK_SIZE_M) ? (ne0 - r0 * BLOCK_SIZE_M) : BLOCK_SIZE_M; - short n_cols = (ne1 - r1 * BLOCK_SIZE_N < BLOCK_SIZE_N) ? (ne1 - r1 * BLOCK_SIZE_N) : BLOCK_SIZE_N; - - // a thread shouldn't load data outside of the matrix - short thread_row = ((short)tiitg/THREAD_PER_ROW) < n_rows ? ((short)tiitg/THREAD_PER_ROW) : n_rows - 1; - short thread_col = ((short)tiitg/THREAD_PER_COL) < n_cols ? ((short)tiitg/THREAD_PER_COL) : n_cols - 1; - - simdgroup_half8x8 ma[4]; - simdgroup_float8x8 mb[2]; - simdgroup_float8x8 c_res[8]; - for (int i = 0; i < 8; i++){ - c_res[i] = make_filled_simdgroup_matrix(0.f); - } - - short il = (tiitg % THREAD_PER_ROW); - - uint offset0 = im/gqa*nb02; - ushort offset1 = il/nl; - - device const block_q * x = (device const block_q *)(src0 + (r0 * BLOCK_SIZE_M + thread_row) * nb01 + offset0) + offset1; - device const float * y = (device const float *)(src1 - + nb12 * im - + nb11 * (r1 * BLOCK_SIZE_N + thread_col) - + nb10 * (BLOCK_SIZE_K / THREAD_PER_COL * (tiitg % THREAD_PER_COL))); - - for (int loop_k = 0; loop_k < ne00; loop_k += BLOCK_SIZE_K) { - // load data and store to threadgroup memory - half4x4 temp_a; - dequantize_func(x, il, temp_a); - threadgroup_barrier(mem_flags::mem_threadgroup); - - #pragma unroll(16) - for (int i = 0; i < 16; i++) { - *(sa + SG_MAT_SIZE * ((tiitg / THREAD_PER_ROW / 8) \ - + (tiitg % THREAD_PER_ROW) * 16 + (i / 8) * 8) \ - + (tiitg / THREAD_PER_ROW) % 8 + (i & 7) * 8) = temp_a[i/4][i%4]; - } - - *(threadgroup float2x4 *)(sb + (tiitg % THREAD_PER_COL) * 8 * 32 + 8 * (tiitg / THREAD_PER_COL)) = *((device float2x4 *)y); - - il = (il + 2 < nl) ? il + 2 : il % 2; - x = (il < 2) ? x + (2+nl-1)/nl : x; - y += BLOCK_SIZE_K; - - threadgroup_barrier(mem_flags::mem_threadgroup); - - // load matrices from threadgroup memory and conduct outer products - threadgroup half * lsma = (sa + THREAD_MAT_M * SG_MAT_SIZE * (sgitg % 2)); - threadgroup float * lsmb = (sb + THREAD_MAT_N * SG_MAT_SIZE * (sgitg / 2)); - - #pragma unroll(4) - for (int ik = 0; ik < BLOCK_SIZE_K / 8; ik++) { - #pragma unroll(4) - for (int i = 0; i < 4; i++) { - simdgroup_load(ma[i],lsma + SG_MAT_SIZE * i); - } - simdgroup_barrier(mem_flags::mem_none); - #pragma unroll(2) - for (int i = 0; i < 2; i++) { - simdgroup_load(mb[i],lsmb + SG_MAT_SIZE * i); - } - - lsma += BLOCK_SIZE_M / SG_MAT_ROW * SG_MAT_SIZE; - lsmb += BLOCK_SIZE_N / SG_MAT_ROW * SG_MAT_SIZE; - - #pragma unroll(8) - for (int i = 0; i < 8; i++){ - simdgroup_multiply_accumulate(c_res[i], mb[i/4], ma[i%4], c_res[i]); - } - } - } - - if ((r0 + 1) * BLOCK_SIZE_M <= ne0 && (r1 + 1) * BLOCK_SIZE_N <= ne1) { - device float * C = dst + (BLOCK_SIZE_M * r0 + 32 * (sgitg & 1)) \ - + (BLOCK_SIZE_N * r1 + 16 * (sgitg >> 1)) * ne0 + im*ne1*ne0; - for (int i = 0; i < 8; i++) { - simdgroup_store(c_res[i], C + 8 * (i%4) + 8 * ne0 * (i/4), ne0); - } - } else { - // block is smaller than 64x32, we should avoid writing data outside of the matrix - threadgroup_barrier(mem_flags::mem_threadgroup); - threadgroup float * temp_str = ((threadgroup float *)shared_memory) \ - + 32 * (sgitg&1) + (16 * (sgitg>>1)) * BLOCK_SIZE_M; - for (int i = 0; i < 8; i++) { - simdgroup_store(c_res[i], temp_str + 8 * (i%4) + 8 * BLOCK_SIZE_M * (i/4), BLOCK_SIZE_M); - } - - threadgroup_barrier(mem_flags::mem_threadgroup); - - device float * C = dst + (BLOCK_SIZE_M * r0) + (BLOCK_SIZE_N * r1) * ne0 + im*ne1*ne0; - if (sgitg == 0) { - for (int i = 0; i < n_rows; i++) { - for (int j = tiitg; j < n_cols; j += BLOCK_SIZE_N) { - *(C + i + j * ne0) = *(temp_str + i + j * BLOCK_SIZE_M); - } - } - } - } -} - -#if QK_K == 256 -#define QK_NL 16 -#else -#define QK_NL 4 -#endif - -typedef void (get_rows_t)(device const void *, device const int *, device float *, constant int64_t &, \ - constant uint64_t &, constant uint64_t &, uint, uint, uint); - -template [[host_name("kernel_get_rows_f32")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_f16")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q4_0")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q4_1")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q5_0")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q5_1")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q8_0")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q2_K")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q3_K")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q4_K")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q5_K")]] kernel get_rows_t kernel_get_rows; -template [[host_name("kernel_get_rows_q6_K")]] kernel get_rows_t kernel_get_rows; - -typedef void (mat_mm_t)( - device const uchar * src0, - device const uchar * src1, - device float * dst, - constant int64_t & ne00, - constant int64_t & ne02, - constant int64_t & nb01, - constant int64_t & nb02, - constant int64_t & ne12, - constant int64_t & nb10, - constant int64_t & nb11, - constant int64_t & nb12, - constant int64_t & ne0, - constant int64_t & ne1, - constant uint & gqa, - threadgroup uchar *, uint3, uint, uint); - -template [[host_name("kernel_mul_mm_f32_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_f16_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q4_0_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q4_1_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q5_0_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q5_1_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q8_0_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q2_K_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q3_K_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q4_K_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q5_K_f32")]] kernel mat_mm_t kernel_mul_mm; -template [[host_name("kernel_mul_mm_q6_K_f32")]] kernel mat_mm_t kernel_mul_mm; diff --git a/LLama/runtimes/macos-x86_64/libllama.dylib b/LLama/runtimes/macos-x86_64/libllama.dylib index f3e412128d79225a2fae5e1115e0f085d26788b3..37eb3cd43896f2e8ae243965eaa2368314819bf8 100644 GIT binary patch delta 197592 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 BKAHdk delta 243545 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 Bo3sD`