Skip to content

Commit f388de9

Browse files
committed
save code, pipline
1 parent 772d2ec commit f388de9

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

csrc/xpu_cutlass_fusion.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -522,10 +522,21 @@ printf("src_compress_size = %d, dst_compress_size = %d, src_vec_size = %d, dst_v
522522
for (int l = 0; l < src_loop_num; l++) {
523523
reinterpret_cast<sycl::vec<src_compress_type, src_vec_size>*>(src)[0] = reinterpret_cast<sycl::vec<src_compress_type, src_vec_size>*>(cute::raw_pointer_cast(dequant_frag.data()))[n*src_loop_num + l];
524524

525+
526+
int v = 0;
527+
src_compress_type src_value = src[v];
528+
int dst_base_idx = l * src_vec_size * src_compress_size + v * src_compress_size;
529+
for (int c = 0; c < src_compress_size; c++) {
530+
uint8_t bit_value = (src_value >> (4 * (((c + 1) & 1) + (c >> 1) * 2))) & 0xF;
531+
float scale_value = fragment_scale((n * BLK_K + dst_base_idx + c) >> (31 - std::countl_zero<unsigned int>(GROUP_SIZE)));
532+
dst[dst_base_idx + c] = static_cast<ElementMMA>(quant_map_[lut_id][bit_value] * scale_value);
533+
lut_id = (lut_id + 1) % LUT_NUM;
534+
}
535+
v++;
525536
#pragma unroll
526-
for (int v = 0; v < src_vec_size; v++) {
537+
for (; v < src_vec_size - 1;) {
527538
src_compress_type src_value = src[v];
528-
int dst_base_idx = l * src_vec_size * src_compress_size + v * src_compress_size;
539+
dst_base_idx = l * src_vec_size * src_compress_size + v * src_compress_size;
529540
//int dst_base_idx = 0;
530541
#pragma unroll
531542
for (int c = 0; c < src_compress_size; c++) {
@@ -534,8 +545,9 @@ printf("src_compress_size = %d, dst_compress_size = %d, src_vec_size = %d, dst_v
534545
dst[dst_base_idx + c] = static_cast<ElementMMA>(quant_map_[lut_id][bit_value] * scale_value);
535546
lut_id = (lut_id + 1) % LUT_NUM;
536547
}
537-
reinterpret_cast<sycl::vec<dst_compress_type, 4>*>(cute::raw_pointer_cast(mma_B.data()))[n*src_loop_num + l * src_vec_size + v] = reinterpret_cast<sycl::vec<dst_compress_type, 4>*>(dst)[v];
548+
reinterpret_cast<sycl::vec<dst_compress_type, 4>*>(cute::raw_pointer_cast(mma_B.data()))[n*src_loop_num + l * src_vec_size + v-1] = reinterpret_cast<sycl::vec<dst_compress_type, 4>*>(dst)[v-1];
538549
}
550+
reinterpret_cast<sycl::vec<dst_compress_type, 4>*>(cute::raw_pointer_cast(mma_B.data()))[n*src_loop_num + l * src_vec_size + v] = reinterpret_cast<sycl::vec<dst_compress_type, 4>*>(dst)[v];
539551
}
540552

541553
// #pragma unroll

0 commit comments

Comments
 (0)