BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock > Struct Template Reference

BlockToCTileMap_3DGrid_KSplit&lt; MPerBlock, NPerBlock &gt; Struct Template Reference#

Composable Kernel: ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock > Struct Template Reference
ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock > Struct Template Reference

Simple tile mapping which creates 3D grid of block of threads. More...

#include <block_to_ctile_map.hpp>

Public Member Functions

__host__ __device__ BlockToCTileMap_3DGrid_KSplit ()=default
__host__ __device__ constexpr auto CalculateGridSize (index_t M, index_t N, index_t k_split) const
template<typename TopIdx>
__device__ constexpr auto CalculateBottomIndex (const TopIdx &) const
template<typename CTileIdx, typename CTileDim>
__host__ __device__ bool ValidCTileIndex (const CTileIdx &, const CTileDim &) const
template<typename CGridDesc_M_N>
__host__ constexpr bool CheckValidity (const CGridDesc_M_N &) const

Detailed Description

template<index_t MPerBlock, index_t NPerBlock>
struct ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock >

Simple tile mapping which creates 3D grid of block of threads.

Description

This Block-to-C-tile-map creates a 3D grid (n_blocks, m_blocks, z_blocks) of thread blocks. The first 2D are regular 2D tiles created by division of output GEMM dimenions by corresponding tile size. The third dimension (Z) is a k-split dimension, which denotes the number of blocks we use to divide work on GEMM K dimension onto.

Template Parameters
MPerBlockOutput block tile size in M dimension.
NPerBlockOutput block tile size in N dimension.

Constructor & Destructor Documentation

◆ BlockToCTileMap_3DGrid_KSplit()

template<index_t MPerBlock, index_t NPerBlock>
__host__ __device__ ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock >::BlockToCTileMap_3DGrid_KSplit ( )
default

Member Function Documentation

◆ CalculateBottomIndex()

template<index_t MPerBlock, index_t NPerBlock>
template<typename TopIdx>
__device__ constexpr auto ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock >::CalculateBottomIndex ( const TopIdx & ) const
inlineconstexpr

◆ CalculateGridSize()

template<index_t MPerBlock, index_t NPerBlock>
__host__ __device__ constexpr auto ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock >::CalculateGridSize ( index_t M,
index_t N,
index_t k_split ) const
inlineconstexpr

◆ CheckValidity()

template<index_t MPerBlock, index_t NPerBlock>
template<typename CGridDesc_M_N>
__host__ constexpr bool ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock >::CheckValidity ( const CGridDesc_M_N & ) const
inlineconstexpr

◆ ValidCTileIndex()

template<index_t MPerBlock, index_t NPerBlock>
template<typename CTileIdx, typename CTileDim>
__host__ __device__ bool ck::BlockToCTileMap_3DGrid_KSplit< MPerBlock, NPerBlock >::ValidCTileIndex ( const CTileIdx & ,
const CTileDim &  ) const
inline

The documentation for this struct was generated from the following file: