DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type > Struct Template Reference

DeviceImageToColumnImpl&lt; NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type &gt; Struct Template Reference#

Composable Kernel: ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type > Struct Template Reference
ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type > Struct Template Reference

#include <device_image_to_column_impl.hpp>

Inheritance diagram for ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >:
ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, conv_tensor_rearrange_op::ImageToColumn > ck::tensor_operation::device::BaseOperator

Classes

struct  Argument
struct  Invoker

Public Types

using ConvToGemmFwdTransformer
using InputGridDesc
using OutputGridDesc = remove_cvref_t<decltype(MakeOutDescriptor_M_K(1, 1, {}, {}, {}))>
using Block2ETileMap
using GridwiseTensorRearrangeKernel

Public Member Functions

bool IsSupportedArgument (const Argument &arg)
bool IsSupportedArgument (const BaseArgument *p_arg) override
std::unique_ptr< BaseArgumentMakeArgumentPointer (const void *p_in, void *p_out, const ck::index_t G, const ck::index_t N, const ck::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 > &image_g_n_c_wis_strides, const std::array< index_t, 3 > &gemm_g_m_k_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) override
 Make argument pointer for image to column.
std::unique_ptr< BaseInvokerMakeInvokerPointer () override
std::string GetTypeString () const override
Public Member Functions inherited from ck::tensor_operation::device::BaseOperator
 BaseOperator ()=default
 BaseOperator (const BaseOperator &)=default
BaseOperatoroperator= (const BaseOperator &)=default
virtual std::string GetInstanceString () const
virtual std::string GetTypeIdName () const
virtual std::optional< std::string > GetObjectName () const
virtual std::optional< std::string > GetTemplateInfo () const
virtual std::string GetTypeIdHashCode () const
virtual size_t GetWorkSpaceSize (const BaseArgument *) const
virtual void SetWorkSpacePointer (BaseArgument *p_arg, void *p_workspace, const StreamConfig &=StreamConfig{}) const
virtual ~BaseOperator ()

Static Public Member Functions

static auto MakeInputDescriptor_M_K (const ck::index_t N, const ck::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 > &image_g_n_c_wis_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)
static auto MakeOutDescriptor_M_K (const ck::index_t N, const ck::index_t C, const std::array< index_t, NDimSpatial > &filter_spatial_lengths, const std::array< index_t, NDimSpatial > &output_spatial_lengths, const std::array< index_t, 3 > &gemm_g_m_k_strides)
static auto MakeArgument (const void *p_in, void *p_out, const ck::index_t G, const ck::index_t N, const ck::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 > &image_g_n_c_wis_strides, const std::array< index_t, 3 > &gemm_g_m_k_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)
static auto MakeInvoker ()

Static Public Attributes

static constexpr bool is_NSpatialGC
static constexpr bool is_GNSpatialC
static constexpr auto I0 = Number<0>{}
static constexpr auto I1 = Number<1>{}
static constexpr auto I2 = Number<2>{}
static constexpr auto matrix_padder

Member Typedef Documentation

◆ Block2ETileMap

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
using ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::Block2ETileMap
Initial value:
remove_cv_t< remove_reference_t< T > > remove_cvref_t
Definition type.hpp:297
Definition block_to_ctile_map.hpp:261
remove_cvref_t< decltype(MakeOutDescriptor_M_K(1, 1, {}, {}, {}))> OutputGridDesc
Definition device_image_to_column_impl.hpp:141

◆ ConvToGemmFwdTransformer

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
using ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::ConvToGemmFwdTransformer
Initial value:
Definition tensor_operation/operator_transform/transform_conv_fwd_to_gemm.hpp:25

◆ GridwiseTensorRearrangeKernel

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
using ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::GridwiseTensorRearrangeKernel
Initial value:
InputDataType,
OutputDataType,
BlockSize,
MPerBlock,
KPerBlock,
ThreadClusterLengths,
ScalarPerVector,
ComputePtrOffsetOfStridedBatch<>>
@ Set
Definition ck.hpp:278
Definition gridwise_tensor_rearrange.hpp:71
remove_cvref_t< decltype(MakeOutDescriptor_M_K( 1, 1, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}))> OutputGridDesc
Definition device_column_to_image_impl.hpp:260
remove_cvref_t< decltype(BlockToCTileMap_M00_N0_M01Adapt< MPerBlock, KPerBlock, InputGridDesc >( InputGridDesc{}))> Block2ETileMap
Definition device_column_to_image_impl.hpp:263
remove_cvref_t< decltype(MakeInputDescriptor_M_K(1, 1, {}, {}, {}, {}, {}, {}))> InputGridDesc
Definition device_column_to_image_impl.hpp:258

◆ InputGridDesc

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
using ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::InputGridDesc
Initial value:
remove_cvref_t<decltype(MakeInputDescriptor_M_K(1, 1, {}, {}, {}, {}, {}, {}, {}, {}))>
static auto MakeInputDescriptor_M_K(const ck::index_t N, const ck::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 > &image_g_n_c_wis_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)
Definition device_image_to_column_impl.hpp:70

◆ OutputGridDesc

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
using ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::OutputGridDesc = remove_cvref_t<decltype(MakeOutDescriptor_M_K(1, 1, {}, {}, {}))>

Member Function Documentation

◆ GetTypeString()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
std::string ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::GetTypeString ( ) const
inlineoverridevirtual

◆ IsSupportedArgument() [1/2]

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
bool ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::IsSupportedArgument ( const Argument & arg)
inline

◆ IsSupportedArgument() [2/2]

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
bool ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::IsSupportedArgument ( const BaseArgument * p_arg)
inlineoverridevirtual

◆ MakeArgument()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::MakeArgument ( const void * p_in,
void * p_out,
const ck::index_t G,
const ck::index_t N,
const ck::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 > & image_g_n_c_wis_strides,
const std::array< index_t, 3 > & gemm_g_m_k_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 )
inlinestatic

◆ MakeArgumentPointer()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
std::unique_ptr< BaseArgument > ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::MakeArgumentPointer ( const void * p_in,
void * p_out,
const ck::index_t G,
const ck::index_t N,
const ck::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 > & image_g_n_c_wis_strides,
const std::array< index_t, 3 > & gemm_g_m_k_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 )
inlineoverridevirtual

Make argument pointer for image to column.

Parameters
p_inA pointer to the device memory of the input image.
p_outA pointer to the device memory of the output.
GConvolution number of groups.
NConvolution batch size.
CConvolution number of channels.
input_spatial_lengthsInput spatial lengths.
filter_spatial_lengthsFilter spatial lengths.
output_spatial_lengthsOutput spatial lengths.
image_g_n_c_wis_stridesImage strides in order [G, N, C, D, H, W].
gemm_g_m_k_stridesGemm form strides.
conv_filter_stridesConvolution filter strides.
conv_filter_dilationsConvolution filter dilations.
input_left_padsConvolution left pads.
input_right_padsConvolution right pads.
Returns
Pointer to the argument.

Implements ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, conv_tensor_rearrange_op::ImageToColumn >.

◆ MakeInputDescriptor_M_K()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::MakeInputDescriptor_M_K ( const ck::index_t N,
const ck::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 > & image_g_n_c_wis_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 )
inlinestatic

◆ MakeInvoker()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::MakeInvoker ( )
inlinestatic

◆ MakeInvokerPointer()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
std::unique_ptr< BaseInvoker > ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::MakeInvokerPointer ( )
inlineoverridevirtual

◆ MakeOutDescriptor_M_K()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::MakeOutDescriptor_M_K ( const ck::index_t N,
const ck::index_t C,
const std::array< index_t, NDimSpatial > & filter_spatial_lengths,
const std::array< index_t, NDimSpatial > & output_spatial_lengths,
const std::array< index_t, 3 > & gemm_g_m_k_strides )
inlinestatic

Member Data Documentation

◆ I0

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::I0 = Number<0>{}
staticconstexpr

◆ I1

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::I1 = Number<1>{}
staticconstexpr

◆ I2

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::I2 = Number<2>{}
staticconstexpr

◆ is_GNSpatialC

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
bool ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::is_GNSpatialC
staticconstexpr
Initial value:
=
std::is_same_v<ImageLayout, tensor_layout::convolution::GNWC> ||
std::is_same_v<ImageLayout, tensor_layout::convolution::GNHWC> ||
std::is_same_v<ImageLayout, tensor_layout::convolution::GNDHWC>

◆ is_NSpatialGC

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
bool ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::is_NSpatialGC
staticconstexpr
Initial value:
=
std::is_same_v<ImageLayout, tensor_layout::convolution::NWGC> ||
std::is_same_v<ImageLayout, tensor_layout::convolution::NHWGC> ||
std::is_same_v<ImageLayout, tensor_layout::convolution::NDHWGC>

◆ matrix_padder

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, index_t BlockSize, index_t MPerBlock, index_t KPerBlock, typename ThreadClusterLengths, index_t ScalarPerVector, typename std::enable_if< NDimSpatial > = 1 && NDimSpatial <= 3, bool, ::type = false>
auto ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::matrix_padder
staticconstexpr
Initial value:

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