/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-7.0.2/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp Source File#
device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp
Go to the documentation of this file.
38 * strided batched, but we can easily extend to other layouts. The returned offset can be either \p
46 * \note Using \p ComputePtrOffsetOfBatch gives us the flexibility that 2 workgroups can compute 2
49 * device_conv3d_fwd_xdl_ndhwc_kzyxc_ndhwk.hpp kernel_gemm_xdlops_v2r3_for_conv3d \endlink for \link
50 * DeviceConv3d \endlink uses the same concept, but currently does NOT encapsulate the computing of
53 * \note \p Block2ETileMap allows customized mapping between a workgroup and the C-tile it computes.
54 * Together with \p ComputePtrOffsetOfBatch, we can reuse GridwiseGemm (and GridwiseGemm fusion ) to
241 using ConvToGemmFwdTransformer = TransformConvFwdToGemm<NDimSpatial, ConvForwardSpecialization>;
float launch_and_time_kernel(const StreamConfig &stream_config, F kernel, dim3 grid_dim, dim3 block_dim, std::size_t lds_byte, Args... args)
Definition: kernel_launch.hpp:14
GemmSpecialization
Definition: gemm_specialization.hpp:11
ConvolutionForwardSpecialization
Definition: convolution_forward_specialization.hpp:15
@ Filter1x1Stride1Pad0
std::string getConvForwardSpecializationString(const ConvolutionForwardSpecialization &s)
Definition: convolution_forward_specialization.hpp:24
CK_TILE_HOST float launch_kernel(const stream_config &s, Callables &&... callables)
Definition: kernel_launch.hpp:94
Definition: ck.hpp:269
typename tuple_element< I, TTuple >::type tuple_element_t
Definition: tuple.hpp:208
__host__ constexpr __device__ auto generate_tuple(F &&f, Number< N >)
Definition: tuple_helper.hpp:21
__device__ uint32_t amd_wave_read_first_lane(uint32_t value)
Definition: amd_wave_read_first_lane.hpp:100
__host__ __device__ void array_convert(std::array< Y, NumElems > &y, const std::array< X, NumElems > &x)
Definition: type_convert.hpp:2390
__host__ constexpr __device__ auto make_pass_through_transform(const LowLength &low_length)
Definition: multi_index_transform_helper.hpp:12
__host__ constexpr __device__ auto make_unmerge_transform(const UpLengths &up_lengths, integral_constant< bool, Use24BitIntegerCalculation >=integral_constant< bool, false >{})
Definition: multi_index_transform_helper.hpp:90
__host__ constexpr __device__ auto transform_tensor_descriptor(const OldTensorDescriptor &old_tensor_desc, const NewTransforms &new_transforms, NewLowerDimensionOldVisibleIdss, NewUpperDimensionNewVisibleIdss)
Definition: tensor_descriptor.hpp:319
Definition: stream_config.hpp:10
Definition: gridwise_gemm_dl_multiple_d.hpp:60
__host__ static constexpr __device__ auto MakeBGridDescriptor_K0_N0_N1_K1(const BGridDesc_K0_N_K1 &b_grid_desc_k0_n_k1)
Definition: gridwise_gemm_dl_multiple_d.hpp:178
__host__ static constexpr __device__ bool CalculateHasMainKBlockLoop(index_t K0)
Definition: gridwise_gemm_dl_multiple_d.hpp:143
__host__ static constexpr __device__ auto MakeDsGridDescriptor_M0_M10_M11_N0_N10_N11(const DsGridDesc_M_N &ds_grid_desc_m_n)
Definition: gridwise_gemm_dl_multiple_d.hpp:234
__host__ static constexpr __device__ auto MakeDefaultBlock2CTileMap(const CGridDesc_M_N &c_grid_desc_m_n)
Definition: gridwise_gemm_dl_multiple_d.hpp:242
decltype(MakeDsGridPointer()) DsGridPointer
Definition: gridwise_gemm_dl_multiple_d.hpp:253
__host__ static constexpr __device__ auto MakeAGridDescriptor_K0_M0_M1_K1(const AGridDesc_K0_M_K1 &a_grid_desc_k0_m_k1)
Definition: gridwise_gemm_dl_multiple_d.hpp:158
__host__ static constexpr __device__ index_t CalculateGridSize(index_t M, index_t N)
Definition: gridwise_gemm_dl_multiple_d.hpp:136
__host__ static constexpr __device__ auto MakeCGridDescriptor_M0_M10_M11_N0_N10_N11(const CGridDesc_M_N_ &c_grid_desc_m_n)
Definition: gridwise_gemm_dl_multiple_d.hpp:200
__host__ static constexpr __device__ bool CalculateHasDoubleTailKBlockLoop(index_t K0)
Definition: gridwise_gemm_dl_multiple_d.hpp:150
__host__ static constexpr __device__ bool CheckValidity(const AGridDesc_K0_M_K1 &a_grid_desc_k0_m_k1, const BGridDesc_K0_N_K1 &b_grid_desc_k0_n_k1, const CGridDesc_M_N &c_grid_desc_m_n)
Definition: gridwise_gemm_dl_multiple_d.hpp:110
Definition: multi_index_transform.hpp:196
Definition: multi_index_transform.hpp:284
Definition: sequence.hpp:43
Definition: integral_constant.hpp:20
Definition: functional2.hpp:33
Definition: transform_conv_fwd_to_gemm.hpp:25
Definition: device_base.hpp:51
Definition: device_base.hpp:62
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:377
std::array< index_t, NDimSpatial+3 > b_g_k_c_xs_strides_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:542
std::array< index_t, NDimSpatial+3 > a_g_n_c_wis_lengths_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:539
void Print() const
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:491
const ADataType * p_a_grid_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:506
ConvToGemmFwdTransformer conv_to_gemm_transformer_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:514
std::array< index_t, NDimSpatial > conv_filter_strides_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:547
EDataType * p_e_grid_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:509
AGridDesc_K0_M0_M1_K1 a_grid_desc_k0_m0_m1_k1_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:522
std::array< index_t, NDimSpatial+3 > a_g_n_c_wis_strides_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:540
std::array< index_t, NDimSpatial+3 > e_g_n_k_wos_strides_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:546
GridwiseGemm::DsGridPointer p_ds_grid_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:508
std::array< index_t, NDimSpatial > conv_filter_dilations_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:548
ComputePtrOffsetOfStridedBatch< I1, I1, NumDTensor > compute_ptr_offset_of_batch_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:531
BGridDesc_K0_N0_N1_K1 b_grid_desc_k0_n0_n1_k1_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:523
AGridDesc_AK0_M_AK1 a_grid_desc_ak0_m_ak1_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:516
std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > ds_g_n_k_wos_strides_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:544
const BDataType * p_b_grid_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:507
EGridDesc_M_N e_grid_desc_m_n_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:519
std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > ds_g_n_k_wos_lengths_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:543
BElementwiseOperation b_element_op_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:535
AElementwiseOperation a_element_op_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:534
DsGridDesc_M0_M10_M11_N0_N10_N11 ds_grid_desc_m0_m10_m11_n0_n10_n11_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:524
Argument(const void *p_a, const void *p_b, const std::array< const void *, NumDTensor > &p_ds, void *p_e, const std::array< index_t, NDimSpatial+3 > &a_g_n_c_wis_lengths, const std::array< index_t, NDimSpatial+3 > &a_g_n_c_wis_strides, const std::array< index_t, NDimSpatial+3 > &b_g_k_c_xs_lengths, const std::array< index_t, NDimSpatial+3 > &b_g_k_c_xs_strides, const std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_lengths, const std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_strides, const std::array< index_t, NDimSpatial+3 > &e_g_n_k_wos_lengths, const std::array< index_t, NDimSpatial+3 > &e_g_n_k_wos_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 AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation &cde_element_op)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:378
DefaultBlock2CTileMap block_2_ctile_map_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:528
DsGridDesc_M_N ds_grid_desc_m_n_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:518
index_t num_group_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:512
std::array< index_t, NDimSpatial+3 > e_g_n_k_wos_lengths_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:545
std::array< index_t, NDimSpatial+3 > b_g_k_c_xs_lengths_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:541
BGridDesc_BK0_N_BK1 b_grid_desc_bk0_n_bk1_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:517
std::array< index_t, NDimSpatial > input_right_pads_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:550
CDEElementwiseOperation cde_element_op_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:536
CGridDesc_M0_M10_M11_N0_N10_N11 e_grid_desc_m0_m10_m11_n0_n10_n11_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:525
std::array< index_t, NDimSpatial > input_left_pads_
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:549
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:555
float Run(const BaseArgument *p_arg, const StreamConfig &stream_config=StreamConfig{}) override
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:648
float Run(const Argument &arg, const StreamConfig &stream_config)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:558
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:231
static constexpr auto I1
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:237
decltype(GridwiseGemm::MakeAGridDescriptor_K0_M0_M1_K1(AGridDesc_AK0_M_AK1{})) AGridDesc_K0_M0_M1_K1
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:365
constexpr static ConvToGemmFwdTransformer dummy_conv_to_gemm_transformer
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:313
static auto MakeBGridDescriptor_BK0_N_BK1(const ConvToGemmFwdTransformer &conv_to_gemm_transformer)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:269
decltype(GridwiseGemm::MakeCGridDescriptor_M0_M10_M11_N0_N10_N11(EGridDesc_M_N{})) CGridDesc_M0_M10_M11_N0_N10_N11
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:371
static constexpr index_t NumDTensor
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:234
static constexpr auto I3
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:239
std::unique_ptr< BaseArgument > MakeArgumentPointer(const void *p_a, const void *p_b, const std::array< const void *, NumDTensor > &p_ds, void *p_e, const std::array< index_t, NDimSpatial+3 > &a_g_n_c_wis_lengths, const std::array< index_t, NDimSpatial+3 > &a_g_n_c_wis_strides, const std::array< index_t, NDimSpatial+3 > &b_g_k_c_xs_lengths, const std::array< index_t, NDimSpatial+3 > &b_g_k_c_xs_strides, const std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_lengths, const std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_strides, const std::array< index_t, NDimSpatial+3 > &e_g_n_k_wos_lengths, const std::array< index_t, NDimSpatial+3 > &e_g_n_k_wos_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 AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation &cde_element_op) override
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:914
static constexpr auto I2
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:238
remove_cvref_t< decltype(MakeAGridDescriptor_AK0_M_AK1< ALayout >(dummy_conv_to_gemm_transformer))> AGridDesc_AK0_M_AK1
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:315
decltype(GridwiseGemm::MakeDefaultBlock2CTileMap(EGridDesc_M_N{})) DefaultBlock2CTileMap
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:373
std::string GetTypeString() const override
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:1034
decltype(GridwiseGemm::MakeBGridDescriptor_K0_N0_N1_K1(BGridDesc_BK0_N_BK1{})) BGridDesc_K0_N0_N1_K1
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:367
static auto MakeAGridDescriptor_AK0_M_AK1(const ConvToGemmFwdTransformer &conv_to_gemm_transformer)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:248
remove_cvref_t< decltype(MakeBGridDescriptor_BK0_N_BK1< BLayout >(dummy_conv_to_gemm_transformer))> BGridDesc_BK0_N_BK1
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:317
static constexpr auto matrix_padder
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:243
GridwiseGemmDlMultipleD_km_kn_mn< BlockSize, ADataType, AccDataType, DsDataType, EDataType, AElementwiseOperation, BElementwiseOperation, CDEElementwiseOperation, InMemoryDataOperationEnum::Set, AGridDesc_AK0_M_AK1, BGridDesc_BK0_N_BK1, EGridDesc_M_N, MPerBlock, NPerBlock, K0PerBlock, K1, M1PerThread, N1PerThread, KPerThread, M1N1ThreadClusterM1Xs, M1N1ThreadClusterN1Xs, ABlockTransferThreadSliceLengths_K0_M0_M1_K1, ABlockTransferThreadClusterLengths_K0_M0_M1_K1, ABlockTransferThreadClusterArrangeOrder, ABlockTransferSrcAccessOrder, ABlockTransferSrcVectorTensorLengths_K0_M0_M1_K1, ABlockTransferSrcVectorTensorContiguousDimOrder, ABlockTransferDstVectorTensorLengths_K0_M0_M1_K1, BBlockTransferThreadSliceLengths_K0_N0_N1_K1, BBlockTransferThreadClusterLengths_K0_N0_N1_K1, BBlockTransferThreadClusterArrangeOrder, BBlockTransferSrcAccessOrder, BBlockTransferSrcVectorTensorLengths_K0_N0_N1_K1, BBlockTransferSrcVectorTensorContiguousDimOrder, BBlockTransferDstVectorTensorLengths_K0_N0_N1_K1, CThreadTransferSrcDstAccessOrder, CThreadTransferSrcDstVectorDim, CThreadTransferDstScalarPerVector > GridwiseGemm
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:362
remove_cvref_t< decltype(MakeDsGridDescriptor_M_N(dummy_conv_to_gemm_transformer))> DsGridDesc_M_N
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:319
static bool IsSupportedArgument(const Argument &arg)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:655
static auto MakeInvoker()
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:912
static auto MakeArgument(const void *p_a, const void *p_b, const std::array< const void *, NumDTensor > &p_ds, void *p_e, const std::array< index_t, NDimSpatial+3 > &a_g_n_c_wis_lengths, const std::array< index_t, NDimSpatial+3 > &a_g_n_c_wis_strides, const std::array< index_t, NDimSpatial+3 > &b_g_k_c_xs_lengths, const std::array< index_t, NDimSpatial+3 > &b_g_k_c_xs_strides, const std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_lengths, const std::array< std::array< index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_strides, const std::array< index_t, NDimSpatial+3 > &e_g_n_k_wos_lengths, const std::array< index_t, NDimSpatial+3 > &e_g_n_k_wos_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 AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation &cde_element_op)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:797
static auto MakeEGridDescriptor_M_N(const ConvToGemmFwdTransformer &conv_to_gemm_transformer)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:290
static auto MakeArgument(const void *p_a, const void *p_b, const std::array< const void *, NumDTensor > &p_ds, void *p_e, const std::array< long_index_t, NDimSpatial+3 > &a_g_n_c_wis_lengths, const std::array< long_index_t, NDimSpatial+3 > &a_g_n_c_wis_strides, const std::array< long_index_t, NDimSpatial+3 > &b_g_k_c_xs_lengths, const std::array< long_index_t, NDimSpatial+3 > &b_g_k_c_xs_strides, const std::array< std::array< long_index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_lengths, const std::array< std::array< long_index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_strides, const std::array< long_index_t, NDimSpatial+3 > &e_g_n_k_wos_lengths, const std::array< long_index_t, NDimSpatial+3 > &e_g_n_k_wos_strides, const std::array< long_index_t, NDimSpatial > &conv_filter_strides, const std::array< long_index_t, NDimSpatial > &conv_filter_dilations, const std::array< long_index_t, NDimSpatial > &input_left_pads, const std::array< long_index_t, NDimSpatial > &input_right_pads, const AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation &cde_element_op)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:840
static auto MakeDsGridDescriptor_M_N(const ConvToGemmFwdTransformer &conv_to_gemm_transformer)
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:301
std::unique_ptr< BaseArgument > MakeArgumentPointer(const void *p_a, const void *p_b, const std::array< const void *, NumDTensor > &p_ds, void *p_e, const std::array< long_index_t, NDimSpatial+3 > &a_g_n_c_wis_lengths, const std::array< long_index_t, NDimSpatial+3 > &a_g_n_c_wis_strides, const std::array< long_index_t, NDimSpatial+3 > &b_g_k_c_xs_lengths, const std::array< long_index_t, NDimSpatial+3 > &b_g_k_c_xs_strides, const std::array< std::array< long_index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_lengths, const std::array< std::array< long_index_t, NDimSpatial+3 >, NumDTensor > &ds_g_n_k_wos_strides, const std::array< long_index_t, NDimSpatial+3 > &e_g_n_k_wos_lengths, const std::array< long_index_t, NDimSpatial+3 > &e_g_n_k_wos_strides, const std::array< long_index_t, NDimSpatial > &conv_filter_strides, const std::array< long_index_t, NDimSpatial > &conv_filter_dilations, const std::array< long_index_t, NDimSpatial > &input_left_pads, const std::array< long_index_t, NDimSpatial > &input_right_pads, const AElementwiseOperation &a_element_op, const BElementwiseOperation &b_element_op, const CDEElementwiseOperation &cde_element_op) override
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:957
decltype(GridwiseGemm::MakeDsGridDescriptor_M0_M10_M11_N0_N10_N11(DsGridDesc_M_N{})) DsGridDesc_M0_M10_M11_N0_N10_N11
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:369
remove_cvref_t< decltype(MakeEGridDescriptor_M_N< ELayout >(dummy_conv_to_gemm_transformer))> EGridDesc_M_N
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:321
std::unique_ptr< BaseInvoker > MakeInvokerPointer() override
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:1029
bool IsSupportedArgument(const BaseArgument *p_arg) override
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:792
static constexpr auto I0
Definition: device_grouped_conv_fwd_dl_multiple_d_nhwc_kyxc_nhwk.hpp:236
Grouped Convolution Forward.
Definition: device_grouped_conv_fwd_multiple_abd.hpp:73
Definition: matrix_padder.hpp:180