@@ -163,7 +163,7 @@ class kgemm_4bit_inference_cutlass_dequant {
163163 };
164164
165165 struct Params {
166- int m, n, k;
166+ int m, n, k, l ;
167167 T* A;
168168 uint8_t * B;
169169 float * out;
@@ -278,7 +278,7 @@ class kgemm_4bit_inference_cutlass_dequant {
278278 int M = params.m ;
279279 int N = params.n ;
280280 int K = params.k ;
281- int L = 1 ;
281+ int L = params. l ;
282282
283283 // Total Threads number
284284 static constexpr auto Num_SGs = ATOM_N * ATOM_M * ATOM_K ; // 32 //2
@@ -336,7 +336,7 @@ class kgemm_4bit_inference_cutlass_dequant {
336336 Tensor mB_nkl = cute::get_pvc_tensor (make_shape (N,K,L)); // coordinate tensor: 0,1,2....
337337
338338 Tensor gA = local_tile (mA_mkl , select<0 ,2 >(blk_shape), make_coord (m_coord,_,l_coord));
339- Tensor gB = local_tile (mB_nkl , select<1 ,2 >(blk_shape), make_coord (n_coord,_,l_coord ));
339+ Tensor gB = local_tile (mB_nkl , select<1 ,2 >(blk_shape), make_coord (n_coord,_,0 ));
340340
341341// // Allocate the tiled_mma and the accumulators for the (M,N) subgroup_tile_shape
342342 TiledMma tiled_mma;
@@ -401,7 +401,7 @@ class kgemm_4bit_inference_cutlass_dequant {
401401 auto thr_vmnk = thr_mma.thr_vmnk_ ;
402402 int S_offset = get<2 >(thr_vmnk)*SG_QNT_WIDTH ;
403403 auto tSgS = [&](){
404- return make_tensor (make_inttuple_iter (make_coord (n_coord * BLK_N + S_offset, 0 , l_coord )),
404+ return make_tensor (make_inttuple_iter (make_coord (n_coord * BLK_N + S_offset, 0 , 0 )),
405405 make_layout (make_shape (Int<scale_traits_size>{}, Int<scale_traits_num>{}, _1{}, k_tile_count/k_reload_factor),
406406 make_stride (E<0 >{}*_16{}, E<0 >{}*_16{}, _0{}, E<1 >{}*_1{})));
407407
@@ -421,7 +421,7 @@ class kgemm_4bit_inference_cutlass_dequant {
421421 // }
422422#if 0
423423 #define PRINT(x) print(#x ": "); print(x); print("\n");
424- if (thread_idx==16 && n_coord == 0) { //)(cutlass::thread(LOG_THREAD, LOG_GROUP)) {
424+ if (thread_idx==16 && n_coord == 0 && l_coord==1 ) { //)(cutlass::thread(LOG_THREAD, LOG_GROUP)) {
425425 print("\n\n======================= A: \n");
426426 print(" gA : "); print(gA); print("\n");
427427 print(" tCgA : "); print(tCgA); print("\n");
@@ -578,7 +578,7 @@ printf("\n");
578578};
579579
580580template <typename T, int BITS >
581- void gemm_4bit_inference_cutlass_dequant (int m, int n, int k, T *A, unsigned char *B,
581+ void gemm_4bit_inference_cutlass_dequant (int m, int n, int k, int l, T *A, unsigned char *B,
582582 float *absmax_, float *datatype, float *out, int lda,
583583 int ldb, int ldc, int blocksize, sycl::queue *stream) {
584584 // //std::cout<<"this is gemm_4bit_inference_cutlass_dequant ......................!!!!!!\n";
@@ -599,7 +599,7 @@ void gemm_4bit_inference_cutlass_dequant(int m, int n, int k, T *A, unsigned cha
599599
600600 // static constexpr int smem_size= 512; // (16 * 32) for quant_map
601601 static constexpr int smem_size= 256 ; // (16 * 16) for quant_map
602- int l = 1 ;
602+ // int l = 1;
603603
604604 auto problem_size = ProblemShape{m, n, k, l};
605605
@@ -610,6 +610,7 @@ void gemm_4bit_inference_cutlass_dequant(int m, int n, int k, T *A, unsigned cha
610610 params.m = m;
611611 params.n = n;
612612 params.k = k;
613+ params.l = l;
613614 params.A = A;
614615 params.B = B;
615616 params.out = out;
@@ -629,9 +630,9 @@ void gemm_4bit_inference_cutlass_dequant(int m, int n, int k, T *A, unsigned cha
629630 params.tiled_copy_b = tiled_copy_b;
630631
631632 const int scale_k = cute::ceil_div (k, blocksize);
632- StrideScale stride_S = cutlass::make_cute_packed_stride (StrideScale{}, cute::make_shape (n, scale_k, l ));
633+ StrideScale stride_S = cutlass::make_cute_packed_stride (StrideScale{}, cute::make_shape (n, scale_k, 1 ));
633634 // std::cout<<"m = "<<m<<" n = "<<n<<" k = "<<k<<" blocksize = "<<blocksize<<" scale_k = "<<scale_k<<std::endl;
634- auto mScale = make_tensor (make_gmem_ptr (absmax_), make_layout (make_shape (n, scale_k, l ), stride_S));
635+ auto mScale = make_tensor (make_gmem_ptr (absmax_), make_layout (make_shape (n, scale_k, 1 ), stride_S));
635636 Copy_Scale tiled_copy_scale{Copy_Scale{}.with (mScale )};
636637
637638 params.tiled_copy_scale = tiled_copy_scale;
@@ -701,7 +702,7 @@ void gemm_4bit_inference_cutlass_dequant(int m, int n, int k, T *A, unsigned cha
701702}
702703
703704template void gemm_4bit_inference_cutlass_dequant<sycl::ext::oneapi::bfloat16, 16 >(
704- int m, int n, int k, sycl::ext::oneapi::bfloat16 *A, unsigned char *B,
705+ int m, int n, int k, int l, sycl::ext::oneapi::bfloat16 *A, unsigned char *B,
705706 float *absmax, float *datatype, float *out, int lda,
706707 int ldb, int ldc, int blocksize, sycl::queue *stream);
707708
0 commit comments