DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type > Struct Template Reference#
Classes |
Public Types |
Public Member Functions |
Static Public Member Functions |
Static Public Attributes |
List of all members
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 >:
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< BaseArgument > | 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) override |
| Make argument pointer for image to column. | |
| std::unique_ptr< BaseInvoker > | MakeInvokerPointer () override |
| std::string | GetTypeString () const override |
| Public Member Functions inherited from ck::tensor_operation::device::BaseOperator | |
| BaseOperator ()=default | |
| BaseOperator (const BaseOperator &)=default | |
| BaseOperator & | operator= (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:
OutputGridDesc{}))>
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<>>
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:
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>
|
inlineoverridevirtual |
Reimplemented from ck::tensor_operation::device::BaseOperator.
◆ 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>
|
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>
|
inlineoverridevirtual |
Reimplemented from ck::tensor_operation::device::BaseOperator.
◆ 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>
|
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>
|
inlineoverridevirtual |
Make argument pointer for image to column.
- Parameters
-
p_in A pointer to the device memory of the input image. p_out A pointer to the device memory of the output. G Convolution number of groups. N Convolution batch size. C Convolution number of channels. input_spatial_lengths Input spatial lengths. filter_spatial_lengths Filter spatial lengths. output_spatial_lengths Output spatial lengths. image_g_n_c_wis_strides Image strides in order [G, N, C, D, H, W]. gemm_g_m_k_strides Gemm form strides. conv_filter_strides Convolution filter strides. conv_filter_dilations Convolution filter dilations. input_left_pads Convolution left pads. input_right_pads Convolution right pads.
- Returns
- Pointer to the argument.
◆ 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>
|
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>
|
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>
|
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>
|
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>
|
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>
|
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>
|
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>
|
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>
|
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>
|
staticconstexpr |
Initial value:
=
MPerBlock, 0 , KPerBlock}
Definition matrix_padder.hpp:180
The documentation for this struct was generated from the following file: