Upload patch_llamacpp_hpcq_seg.py
Browse files- patch_llamacpp_hpcq_seg.py +5 -10
patch_llamacpp_hpcq_seg.py
CHANGED
|
@@ -441,12 +441,11 @@ static void hpcq_vec_dot_q2_K_q8_K(int n, float * GGML_RESTRICT s, size_t bs, co
|
|
| 441 |
const block_q2_K * GGML_RESTRICT x = (const block_q2_K *) vx;
|
| 442 |
const block_q8_K * GGML_RESTRICT y = (const block_q8_K *) vy;
|
| 443 |
const int nb = n / QK_K;
|
| 444 |
-
const size_t stride = (seg->enc != 0) ? 256u : 128u;
|
| 445 |
uint16_t ord[QK_K];
|
| 446 |
block_q8_K y_perm;
|
| 447 |
float sumf = 0.0f;
|
| 448 |
for (int i = 0; i < nb; ++i) {{
|
| 449 |
-
|
| 450 |
y_perm.d = y[i].d;
|
| 451 |
for (int g = 0; g < 16; ++g) {{
|
| 452 |
int16_t bsum = 0;
|
|
@@ -474,12 +473,11 @@ static void hpcq_vec_dot_q3_K_q8_K(int n, float * GGML_RESTRICT s, size_t bs, co
|
|
| 474 |
const block_q3_K * GGML_RESTRICT x = (const block_q3_K *) vx;
|
| 475 |
const block_q8_K * GGML_RESTRICT y = (const block_q8_K *) vy;
|
| 476 |
const int nb = n / QK_K;
|
| 477 |
-
const size_t stride = (seg->enc != 0) ? 256u : 128u;
|
| 478 |
uint16_t ord[QK_K];
|
| 479 |
block_q8_K y_perm;
|
| 480 |
float sumf = 0.0f;
|
| 481 |
for (int i = 0; i < nb; ++i) {{
|
| 482 |
-
|
| 483 |
y_perm.d = y[i].d;
|
| 484 |
for (int g = 0; g < 16; ++g) {{
|
| 485 |
int16_t bsum = 0;
|
|
@@ -552,8 +550,7 @@ static inline const uint8_t * hpcq_cuda_get_dev_packed(
|
|
| 552 |
if (!seg) return nullptr;
|
| 553 |
*out_enc = seg->enc;
|
| 554 |
if (seg->dev_packed == nullptr) {{
|
| 555 |
-
const size_t
|
| 556 |
-
const size_t nbytes = (size_t) seg->n_blocks * stride;
|
| 557 |
void * d_ptr = nullptr;
|
| 558 |
if (cudaMalloc(&d_ptr, nbytes) == cudaSuccess && d_ptr != nullptr) {{
|
| 559 |
if (cudaMemcpy(d_ptr, seg->packed, nbytes, cudaMemcpyHostToDevice) == cudaSuccess) {{
|
|
@@ -580,8 +577,7 @@ static __global__ void dequantize_block_q2_K(
|
|
| 580 |
__shared__ uint16_t sh_ord[QK_K];
|
| 581 |
dequantize_q2_K(vx, i, sh_y, threadIdx.x);
|
| 582 |
if (threadIdx.x == 0) {{
|
| 583 |
-
|
| 584 |
-
hpcq_seg_make_order_block(d_packed + (size_t) (b0 + i) * stride, enc, sh_ord);
|
| 585 |
}}
|
| 586 |
__syncthreads();
|
| 587 |
dst_t * y_out = yy + i * QK_K;
|
|
@@ -603,8 +599,7 @@ static __global__ void dequantize_block_q3_K(
|
|
| 603 |
__shared__ uint16_t sh_ord[QK_K];
|
| 604 |
dequantize_q3_K(vx, i, sh_y, threadIdx.x);
|
| 605 |
if (threadIdx.x == 0) {{
|
| 606 |
-
|
| 607 |
-
hpcq_seg_make_order_block(d_packed + (size_t) (b0 + i) * stride, enc, sh_ord);
|
| 608 |
}}
|
| 609 |
__syncthreads();
|
| 610 |
dst_t * y_out = yy + i * QK_K;
|
|
|
|
| 441 |
const block_q2_K * GGML_RESTRICT x = (const block_q2_K *) vx;
|
| 442 |
const block_q8_K * GGML_RESTRICT y = (const block_q8_K *) vy;
|
| 443 |
const int nb = n / QK_K;
|
|
|
|
| 444 |
uint16_t ord[QK_K];
|
| 445 |
block_q8_K y_perm;
|
| 446 |
float sumf = 0.0f;
|
| 447 |
for (int i = 0; i < nb; ++i) {{
|
| 448 |
+
hpcq_seg_make_order_at(seg->packed, seg->enc, b0 + i, ord);
|
| 449 |
y_perm.d = y[i].d;
|
| 450 |
for (int g = 0; g < 16; ++g) {{
|
| 451 |
int16_t bsum = 0;
|
|
|
|
| 473 |
const block_q3_K * GGML_RESTRICT x = (const block_q3_K *) vx;
|
| 474 |
const block_q8_K * GGML_RESTRICT y = (const block_q8_K *) vy;
|
| 475 |
const int nb = n / QK_K;
|
|
|
|
| 476 |
uint16_t ord[QK_K];
|
| 477 |
block_q8_K y_perm;
|
| 478 |
float sumf = 0.0f;
|
| 479 |
for (int i = 0; i < nb; ++i) {{
|
| 480 |
+
hpcq_seg_make_order_at(seg->packed, seg->enc, b0 + i, ord);
|
| 481 |
y_perm.d = y[i].d;
|
| 482 |
for (int g = 0; g < 16; ++g) {{
|
| 483 |
int16_t bsum = 0;
|
|
|
|
| 550 |
if (!seg) return nullptr;
|
| 551 |
*out_enc = seg->enc;
|
| 552 |
if (seg->dev_packed == nullptr) {{
|
| 553 |
+
const size_t nbytes = hpcq_seg_packed_bytes(seg->n_blocks, seg->enc);
|
|
|
|
| 554 |
void * d_ptr = nullptr;
|
| 555 |
if (cudaMalloc(&d_ptr, nbytes) == cudaSuccess && d_ptr != nullptr) {{
|
| 556 |
if (cudaMemcpy(d_ptr, seg->packed, nbytes, cudaMemcpyHostToDevice) == cudaSuccess) {{
|
|
|
|
| 577 |
__shared__ uint16_t sh_ord[QK_K];
|
| 578 |
dequantize_q2_K(vx, i, sh_y, threadIdx.x);
|
| 579 |
if (threadIdx.x == 0) {{
|
| 580 |
+
hpcq_seg_make_order_at(d_packed, enc, b0 + i, sh_ord);
|
|
|
|
| 581 |
}}
|
| 582 |
__syncthreads();
|
| 583 |
dst_t * y_out = yy + i * QK_K;
|
|
|
|
| 599 |
__shared__ uint16_t sh_ord[QK_K];
|
| 600 |
dequantize_q3_K(vx, i, sh_y, threadIdx.x);
|
| 601 |
if (threadIdx.x == 0) {{
|
| 602 |
+
hpcq_seg_make_order_at(d_packed, enc, b0 + i, sh_ord);
|
|
|
|
| 603 |
}}
|
| 604 |
__syncthreads();
|
| 605 |
dst_t * y_out = yy + i * QK_K;
|