From 7151ef86f8632858ef1ed4bc560bf8c26b69c555 Mon Sep 17 00:00:00 2001 From: aska-0096 Date: Fri, 23 May 2025 07:51:26 +0000 Subject: [PATCH] terrible agpr spill observed --- ...blockwise_gemm_mx_pipeline_xdlops_base.hpp | 16 ++++++++------ .../blockwise_gemm_pipeline_xdlops_v3_mx.hpp | 7 +++--- ...roup_tensor_slice_transfer_direct_load.hpp | 9 +++----- .../impl/device_gemm_xdl_cshuffle_v3_mx.hpp | 22 +++++++++++++++++++ .../grid/gridwise_gemm_xdl_cshuffle_v3_mx.hpp | 6 +++++ 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/include/ck/tensor_operation/gpu/block/blockwise_gemm_mx_pipeline_xdlops_base.hpp b/include/ck/tensor_operation/gpu/block/blockwise_gemm_mx_pipeline_xdlops_base.hpp index cee0b3f7d5..b7ecafce7e 100644 --- a/include/ck/tensor_operation/gpu/block/blockwise_gemm_mx_pipeline_xdlops_base.hpp +++ b/include/ck/tensor_operation/gpu/block/blockwise_gemm_mx_pipeline_xdlops_base.hpp @@ -404,17 +404,19 @@ struct BlockwiseGemmXdlops_mx_pipeline_base protected: // M1, N1 as double buffer index // Read buffer + Compute buffer - // A[M0, M1, M2, KPack] + // A[MRepeat/MXdlPack, MWave, MXdlPack, KRepeat, KPack] + // 1 0 3 2 4 + // static constexpr auto a_thread_desc_ = make_naive_tensor_descriptor(make_tuple(Number{}, I1, Number{}, Number{}, Number{}), - make_tuple(Number{}, - Number{}, - Number{}, + make_tuple(Number{}, + Number{}, Number{}, + Number{}, I1)); // B[N0, N1, N2, KPack] @@ -424,10 +426,10 @@ struct BlockwiseGemmXdlops_mx_pipeline_base Number{}, Number{}, Number{}), - make_tuple(Number{}, - Number{}, - Number{}, + make_tuple(Number{}, + Number{}, Number{}, + Number{}, I1)); // C[M, N, NumRegXdlops] diff --git a/include/ck/tensor_operation/gpu/block/blockwise_gemm_pipeline_xdlops_v3_mx.hpp b/include/ck/tensor_operation/gpu/block/blockwise_gemm_pipeline_xdlops_v3_mx.hpp index 0459240fda..c5ce2bb416 100644 --- a/include/ck/tensor_operation/gpu/block/blockwise_gemm_pipeline_xdlops_v3_mx.hpp +++ b/include/ck/tensor_operation/gpu/block/blockwise_gemm_pipeline_xdlops_v3_mx.hpp @@ -246,8 +246,9 @@ struct BlockwiseGemmXdlops_pipeline_v3_mx{}; - static constexpr auto wave_cluster_lengths = - Sequence<1, ThreadGroup::GetNumOfThread() / 64, 1>{}; + static constexpr auto wave_cluster_lengths = WaveClusterLengths{}; + static constexpr auto wave_thread_cluster_lengths = thread_cluster_lengths/wave_cluster_lengths; static constexpr auto thread_single_load_size = generate_sequence( detail::lambda_scalar_per_access{}, Number{}); diff --git a/include/ck/tensor_operation/gpu/device/impl/device_gemm_xdl_cshuffle_v3_mx.hpp b/include/ck/tensor_operation/gpu/device/impl/device_gemm_xdl_cshuffle_v3_mx.hpp index 05ab739785..528a4d6ae5 100644 --- a/include/ck/tensor_operation/gpu/device/impl/device_gemm_xdl_cshuffle_v3_mx.hpp +++ b/include/ck/tensor_operation/gpu/device/impl/device_gemm_xdl_cshuffle_v3_mx.hpp @@ -416,6 +416,28 @@ struct DeviceGemmMX_Xdl_CShuffleV3 : public DeviceGemmMX; + Run(kernel); + } + else + { + const auto kernel = + kernel_gemm_xdl_cshuffle_v3_2lds; + Run(kernel); + } + } } return ave_time; diff --git a/include/ck/tensor_operation/gpu/grid/gridwise_gemm_xdl_cshuffle_v3_mx.hpp b/include/ck/tensor_operation/gpu/grid/gridwise_gemm_xdl_cshuffle_v3_mx.hpp index fb623d8bb9..b5a50feebd 100644 --- a/include/ck/tensor_operation/gpu/grid/gridwise_gemm_xdl_cshuffle_v3_mx.hpp +++ b/include/ck/tensor_operation/gpu/grid/gridwise_gemm_xdl_cshuffle_v3_mx.hpp @@ -1253,6 +1253,7 @@ struct GridwiseGemmMX_xdl_cshuffle_v3 auto a_blockwise_copy = ThreadGroupTensorSliceTransfer_DirectLoad, Sequence, ABlockTransferThreadClusterLengths_AK0_M_AK1, ABlockTransferThreadClusterArrangeOrder, @@ -1272,6 +1273,7 @@ struct GridwiseGemmMX_xdl_cshuffle_v3 // B matrix blockwise copy auto b_blockwise_copy = ThreadGroupTensorSliceTransfer_DirectLoad, Sequence, BBlockTransferThreadClusterLengths_BK0_N_BK1, BBlockTransferThreadClusterArrangeOrder, @@ -1755,6 +1757,7 @@ struct GridwiseGemmMX_xdl_cshuffle_v3 auto a_blockwise_copy = ThreadGroupTensorSliceTransfer_DirectLoad, + Sequence<1, BlockSize/64, 1>, ABlockTransferThreadClusterLengths_AK0_M_AK1, ABlockTransferThreadClusterArrangeOrder, ADataType, @@ -1774,6 +1777,7 @@ struct GridwiseGemmMX_xdl_cshuffle_v3 auto b_blockwise_copy = ThreadGroupTensorSliceTransfer_DirectLoad, + Sequence<1, BlockSize/64, 1>, BBlockTransferThreadClusterLengths_BK0_N_BK1, BBlockTransferThreadClusterArrangeOrder, BDataType, @@ -1828,6 +1832,7 @@ struct GridwiseGemmMX_xdl_cshuffle_v3 Sequence, + Sequence, Sequence, Sequence<0, 1, 2>, AScaleDataType, @@ -1847,6 +1852,7 @@ struct GridwiseGemmMX_xdl_cshuffle_v3 Sequence, + Sequence, Sequence, Sequence<0, 1, 2>, BScaleDataType,