gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp Source File#
gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp
Go to the documentation of this file.
101 __host__ __device__ static constexpr auto GetABlockDescriptor_KBatch_AK0PerBlock_MPerBlock_AK1()
112 __host__ __device__ static constexpr auto GetBBlockDescriptor_KBatch_BK0PerBlock_NPerBlock_BK1()
#define IS_VALID_COMPILATION_PARAMETER_IMPL(CDataType_)
Definition device_base.hpp:178
__host__ __device__ constexpr auto integer_least_multiple(X x, Y y)
Definition utility/math.hpp:78
GemmSpecialization
Definition gemm_specialization.hpp:11
@ MKPadding
Definition gemm_specialization.hpp:18
@ NPadding
Definition gemm_specialization.hpp:15
@ MPadding
Definition gemm_specialization.hpp:14
@ MNKPadding
Definition gemm_specialization.hpp:20
@ MNPadding
Definition gemm_specialization.hpp:17
@ NKPadding
Definition gemm_specialization.hpp:19
Definition ck.hpp:268
__host__ __device__ constexpr auto make_multi_index(Xs &&... xs)
Definition array_multi_index.hpp:15
typename uniform_sequence_gen< NSize, I >::type uniform_sequence_gen_t
Definition utility/sequence.hpp:928
constexpr auto BlockwiseGemmXdlops_k0mk1_k0nk1_m0n0m1n1m2m3m4n2_Selector()
Definition blockwise_gemm_xdlops.hpp:620
__host__ __device__ constexpr auto make_pass_through_transform(const LowLength &low_length)
Definition multi_index_transform_helper.hpp:12
__host__ __device__ constexpr auto container_concat(const X &x, const Ys &... ys)
Definition utility/container_helper.hpp:320
constexpr auto GridwiseGemmPipeline_Selector()
Definition gridwise_gemm_pipeline_selector.hpp:31
__host__ __device__ constexpr auto make_naive_tensor_descriptor(const Tuple< Lengths... > &lengths, const Tuple< Strides... > &strides)
Definition tensor_descriptor_helper.hpp:49
__host__ __device__ constexpr auto make_single_stage_tensor_adaptor(const Transforms &transforms, LowerDimensionOldTopIdss, UpperDimensionNewTopIdss)
Definition tensor_description/tensor_adaptor.hpp:425
__host__ __device__ constexpr auto make_freeze_transform(const LowerIndex &low_idx)
Definition multi_index_transform_helper.hpp:151
__host__ __device__ constexpr auto make_right_pad_transform(const LowLength &low_length, const RightPadLength &right_pad, integral_constant< bool, SkipIsValidCheck >=integral_constant< bool, false >{})
Definition multi_index_transform_helper.hpp:37
typename tuple_element< I, TTuple >::type tuple_element_t
Definition utility/tuple.hpp:208
__host__ __device__ constexpr auto make_merge_transform(const LowLengths &low_lengths)
Definition multi_index_transform_helper.hpp:55
__host__ __device__ constexpr auto generate_tuple(F &&f, Number< N >)
Definition tuple_helper.hpp:21
__host__ __device__ constexpr auto make_naive_tensor_descriptor_packed(const Tuple< Lengths... > &lengths)
Definition tensor_descriptor_helper.hpp:101
__host__ __device__ constexpr auto make_tuple(Xs &&... xs)
Definition utility/tuple.hpp:211
typename sequence_merge< Sx, Sy >::type sequence_merge_t
Definition utility/sequence.hpp:925
__host__ __device__ constexpr auto transform_tensor_descriptor(const OldTensorDescriptor &old_tensor_desc, const NewTransforms &new_transforms, NewLowerDimensionOldVisibleIdss, NewUpperDimensionNewVisibleIdss)
Definition tensor_description/tensor_descriptor.hpp:319
__host__ __device__ constexpr auto make_unmerge_transform(const UpLengths &up_lengths, integral_constant< bool, Use24BitIntegerCalculation >=integral_constant< bool, false >{})
Definition multi_index_transform_helper.hpp:90
__host__ __device__ constexpr auto make_dynamic_buffer(T *p, ElementSpaceSize element_space_size)
Definition dynamic_buffer.hpp:472
__host__ __device__ constexpr auto generate_tie(F &&f, Number< N >)
Definition tuple_helper.hpp:34
__host__ __device__ constexpr auto concat_tuple_of_reference(const Tuple< X &... > &tx, const Tuple< Y &... > &ty)
Definition tuple_helper.hpp:42
Definition block_to_ctile_map.hpp:261
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:79
__host__ static __device__ constexpr auto GetBBlockDescriptor_KBatch_BK0PerBlock_NPerBlock_BK1()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:112
__host__ static __device__ auto CalculateMPadded(index_t M)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:194
static constexpr auto I3
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:87
static constexpr auto BK1
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:95
__host__ static __device__ constexpr auto GetABlockDescriptor_AK0PerBlock_MPerBlock_AK1()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:123
static constexpr auto I5
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:89
static __device__ void Run(const void *__restrict__ p_a_grid_, const void *__restrict__ p_b_grid_, DsGridPointer p_ds_grid, void *__restrict__ p_e_grid_, void *__restrict__ p_shared, uint32_t *barrier_count_finished, const AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation &cde_element_op, const index_t M, const index_t N, const index_t K, const index_t StrideA, const index_t StrideB, const std::array< index_t, NumDTensor > StrideDs, const index_t StrideE, const index_t KBatch, const Block2ETileMap &block_2_etile_map)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:987
__host__ static __device__ constexpr bool CheckValidity(const index_t M, const index_t N, const index_t K, const index_t StrideA, const index_t StrideB, const std::array< index_t, NumDTensor > StrideDs, const index_t StrideE, const index_t KBatch)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:359
__host__ static __device__ constexpr auto MakeDefaultBlock2ETileMap(const EGridDesc_M_N &e_grid_desc_m_n)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:345
__host__ static __device__ constexpr auto MakeEGridDescriptor_MBlock_MPerBlock_NBlock_NPerBlock(const EGridDesc_M_N &e_grid_desc_m_n)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:312
remove_cvref_t< decltype(GridwiseGemmPipeline_Selector< PipelineVer, NumGemmKPrefetchStage, LoopSched >())> GridwiseGemmPipe
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:101
static constexpr auto BK0PerBlock
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:97
__host__ static __device__ constexpr bool CalculateHasMainKBlockLoop(index_t K)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:407
__host__ static __device__ auto CalculateNPadded(index_t N)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:199
static constexpr auto I7
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:91
static __device__ void Run(const ADataType *__restrict__ p_a_grid, const BDataType *__restrict__ p_b_grid, DsGridPointer p_ds_grid, EDataType *__restrict__ p_e_grid, void *__restrict__ p_shared, uint32_t *barrier_count_finished, const index_t KBatch, const AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation_ &cde_element_op, const AGridDesc_KBatch_AK0_M_AK1 &a_grid_desc_kbatch_ak0_m_ak1, const BGridDesc_KBatch_BK0_N_BK1 &b_grid_desc_kbatch_bk0_n_bk1, const DsGridDesc_MBlock_MPerBlock_NBlock_NPerBlock &ds_grid_desc_mblock_mperblock_nblock_nperblock, const EGridDesc_MBlock_MPerBlock_NBlock_NPerBlock &e_grid_desc_mblock_mperblock_nblock_nperblock, const Block2ETileMap &block_2_etile_map)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:466
__host__ static __device__ constexpr index_t GetSharedMemoryNumberOfByte()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:167
ck::tensor_operation::device::GemmSpecialization GemmSpecialization
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:82
__device__ static __host__ constexpr auto GetMPerBlock()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:454
static constexpr auto I6
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:90
__host__ static __device__ constexpr auto MakeDsGridDescriptor_MBlock_MPerBlock_NBlock_NPerBlock(const DsGridDesc_M_N &ds_grid_desc_m_n)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:333
__host__ static __device__ auto CalculateKPadded(index_t K, index_t K_Batch)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:204
__host__ static __device__ auto MakeAGridDescriptor_KBatch_AK0_M_AK1(index_t M, index_t K, index_t StrideA, index_t KBatch)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:211
__host__ static __device__ constexpr auto GetABlockDescriptor_KBatch_AK0PerBlock_MPerBlock_AK1()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:101
__host__ static __device__ auto MakeBGridDescriptor_KBatch_BK0_N_BK1(index_t K, index_t N, index_t StrideB, index_t KBatch)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:261
static constexpr auto I2
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:86
__host__ static __device__ auto MakeDsGridDescriptor_M_N(const std::array< index_t, NumDTensor > &MRaws, const std::array< index_t, NumDTensor > &NRaws, const std::array< index_t, NumDTensor > &DsStride)
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:441
static constexpr auto I4
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:88
static constexpr auto I1
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:85
__host__ static __device__ constexpr auto GetCShuffleBlockDescriptor_MBlock_MPerBlock_NBlock_NPerBlock()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:140
__host__ static __device__ auto MakeEGridDescriptor_M_N(index_t MRaw, index_t NRaw, index_t StrideE)
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:421
static constexpr index_t NumDTensor
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:80
static __device__ void Run(const ADataType *__restrict__ p_a_grid, const BDataType *__restrict__ p_b_grid, DsGridPointer p_ds_grid, EDataType *__restrict__ p_e_grid, void *__restrict__ p_shared, uint32_t *barrier_count_finished, const index_t KBatch, const AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation_ &cde_element_op, const AGridDesc_KBatch_AK0_M_AK1 &a_grid_desc_kbatch_ak0_m_ak1, const BGridDesc_KBatch_BK0_N_BK1 &b_grid_desc_kbatch_bk0_n_bk1, const DsGridDesc_MBlock_MPerBlock_NBlock_NPerBlock &ds_grid_desc_mblock_mperblock_nblock_nperblock, const EGridDesc_MBlock_MPerBlock_NBlock_NPerBlock &e_grid_desc_mblock_mperblock_nblock_nperblock, const Block2ETileMap &block_2_etile_map)
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:470
static constexpr auto AK0PerBlock
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:96
__host__ static __device__ constexpr auto GetBBlockDescriptor_BK0PerBlock_NPerBlock_BK1()
Definition gridwise_gemm_split_k_multiple_d_xdl_cshuffle_v2.hpp:131
static constexpr auto AK1
Definition gridwise_gemm_multiple_d_xdl_splitk_cshuffle.hpp:94
Selects the appropriate MFMA instruction type and configuration for given data types and tile sizes o...
Definition xdlops_gemm.hpp:1208
Definition utility/sequence.hpp:43
Definition tensor_space_filling_curve.hpp:20
Definition static_buffer.hpp:16
Blockwise data transfer.
Definition thread_group_tensor_slice_transfer_v4r1.hpp:46
Definition thread_group_tensor_slice_transfer_v7.hpp:42
Definition threadwise_tensor_slice_transfer.hpp:39
Definition utility/tuple.hpp:117
Definition functional2.hpp:33
__host__ __device__ constexpr auto PadCDescriptor_M_N(const CDesc_MRaw_NRaw &c_desc_mraw_nraw) const
Definition matrix_padder.hpp:163
Definition matrix_padder.hpp:180
Definition tensor_operation/gpu/element/unary_element_wise_operation.hpp:340