|
| template<index_t NDim, typename enable_if< NDim==1, bool >::type = false> |
| static constexpr auto | make_out_grid_desc (const index_t N, const index_t Wo, const index_t K, const std::array< index_t, NDimSpatial+3 > &output_strides) |
| template<index_t NDim, typename enable_if< NDim==1, bool >::type = false> |
| static constexpr auto | make_in_grid_desc (const index_t N, const index_t Wi, const index_t C, const std::array< index_t, NDimSpatial+3 > &input_strides) |
| template<index_t NDim, typename enable_if< NDim==1, bool >::type = false> |
| static constexpr auto | make_wei_grid_desc (const index_t K, const index_t X, const index_t C, const std::array< index_t, NDimSpatial+3 > &weights_strides) |
| template<index_t NDim, typename enable_if< NDim==2, bool >::type = false> |
| static constexpr auto | make_out_grid_desc (const index_t N, const index_t Ho, const index_t Wo, const index_t K, const std::array< index_t, NDimSpatial+3 > &output_strides) |
| template<index_t NDim, typename enable_if< NDim==2, bool >::type = false> |
| static constexpr auto | make_in_grid_desc (const index_t N, const index_t Hi, const index_t Wi, const index_t C, const std::array< index_t, NDimSpatial+3 > &input_strides) |
| template<index_t NDim, typename enable_if< NDim==2, bool >::type = false> |
| static constexpr auto | make_wei_grid_desc (const index_t K, const index_t Y, const index_t X, const index_t C, const std::array< index_t, NDimSpatial+3 > &weights_strides) |
| template<index_t NDim, typename enable_if< NDim==3, bool >::type = false> |
| static constexpr auto | make_out_grid_desc (const index_t N, const index_t Do, const index_t Ho, const index_t Wo, const index_t K, const std::array< index_t, NDimSpatial+3 > &output_strides) |
| template<index_t NDim, typename enable_if< NDim==3, bool >::type = false> |
| static constexpr auto | make_in_grid_desc (const index_t N, const index_t Di, const index_t Hi, const index_t Wi, const index_t C, const std::array< index_t, NDimSpatial+3 > &input_strides) |
| template<index_t NDim, typename enable_if< NDim==3, bool >::type = false> |
| static constexpr auto | make_wei_grid_desc (const index_t K, const index_t Z, const index_t Y, const index_t X, const index_t C, const std::array< index_t, NDimSpatial+3 > &weights_strides) |
| template<index_t NDim, typename enable_if< NDim==1, bool >::type = false> |
| static auto | MakeABCGridDescriptor_A_K0_M_K1_B_K0_N_K1_C_M_N (const index_t N, const index_t K, const index_t C, const std::array< index_t, NDimSpatial > &input_spatial_lengths, const std::array< index_t, NDimSpatial > &filter_spatial_lengths, const std::array< index_t, NDimSpatial > &output_spatial_lengths, const std::array< index_t, NDimSpatial+3 > &input_strides, const std::array< index_t, NDimSpatial+3 > &weights_strides, const std::array< index_t, NDimSpatial+3 > &output_strides, const std::array< index_t, NDimSpatial > &conv_filter_strides, const std::array< index_t, NDimSpatial > &conv_filter_dilations, const std::array< index_t, NDimSpatial > &input_left_pads, const std::array< index_t, NDimSpatial > &input_right_pads, const index_t batch_k) |
| template<index_t NDim, typename enable_if< NDim==2, bool >::type = false> |
| static auto | MakeABCGridDescriptor_A_K0_M_K1_B_K0_N_K1_C_M_N (const index_t N, const index_t K, const index_t C, const std::array< index_t, NDimSpatial > &input_spatial_lengths, const std::array< index_t, NDimSpatial > &filter_spatial_lengths, const std::array< index_t, NDimSpatial > &output_spatial_lengths, const std::array< index_t, NDimSpatial+3 > &input_strides, const std::array< index_t, NDimSpatial+3 > &weights_strides, const std::array< index_t, NDimSpatial+3 > &output_strides, const std::array< index_t, NDimSpatial > &conv_filter_strides, const std::array< index_t, NDimSpatial > &conv_filter_dilations, const std::array< index_t, NDimSpatial > &input_left_pads, const std::array< index_t, NDimSpatial > &input_right_pads, const index_t batch_k) |
| template<index_t NDim, typename enable_if< NDim==3, bool >::type = false> |
| static auto | MakeABCGridDescriptor_A_K0_M_K1_B_K0_N_K1_C_M_N (const index_t N, const index_t K, const index_t C, const std::array< index_t, NDimSpatial > &input_spatial_lengths, const std::array< index_t, NDimSpatial > &filter_spatial_lengths, const std::array< index_t, NDimSpatial > &output_spatial_lengths, const std::array< index_t, NDimSpatial+3 > &input_strides, const std::array< index_t, NDimSpatial+3 > &weights_strides, const std::array< index_t, NDimSpatial+3 > &output_strides, const std::array< index_t, NDimSpatial > &conv_filter_strides, const std::array< index_t, NDimSpatial > &conv_filter_dilations, const std::array< index_t, NDimSpatial > &input_left_pads, const std::array< index_t, NDimSpatial > &input_right_pads, const index_t batch_k) |
template<
index_t NDimSpatial,
index_t MPerBlock,
index_t NPerBlock,
index_t GemmK1Number,
index_t K0PerBlock,
index_t NumGroupsToMerge,
device::ConvolutionBackwardWeightSpecialization ConvBackwardWeightSpecialization>
struct ck::tensor_operation::TransformConvBwdWeightToGemmV2< NDimSpatial, MPerBlock, NPerBlock, GemmK1Number, K0PerBlock, NumGroupsToMerge, ConvBackwardWeightSpecialization >
Transform conv bwd weight to gemm v2.
This version does following things:
- Merge KBatch with K0 to align descriptor with universal gemm
- Merge Batch with M and N dimension. It allows to increase compute in case of small M and N. It also allows to vector load and store in case of K = 1, C = 1 and NHWGC layout.