DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp > Struct Template Reference

DeviceConvTensorRearrange&lt; NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp &gt; Struct Template Reference#

Composable Kernel: ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp > Struct Template Reference
ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp > Struct Template Referenceabstract

Convolution Tensor Rearrange. More...

#include <device_conv_tensor_rearrange.hpp>

Inheritance diagram for ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp >:
ck::tensor_operation::device::BaseOperator

Public Member Functions

virtual 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)=0
 Make argument pointer for image to column.
virtual std::unique_ptr< BaseInvokerMakeInvokerPointer ()=0
Public Member Functions inherited from ck::tensor_operation::device::BaseOperator
 BaseOperator ()=default
 BaseOperator (const BaseOperator &)=default
BaseOperatoroperator= (const BaseOperator &)=default
virtual bool IsSupportedArgument (const BaseArgument *)
virtual std::string GetTypeString () const
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 ()

Detailed Description

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, typename ConvTensorRearrangeOp>
struct ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp >

Convolution Tensor Rearrange.

This Device operator supports converting an image to the GEMM representation (Image to Column) and converting a GEMM form to the image (Column to Image). Supported layouts: [G, N, Di, Hi, Wi, C] <-> [G, N * Do * Ho * Wo, Z * Y * X * C] [N, Di, Hi, Wi, G, C] <-> [N * Do * Ho * Wo, G, Z * Y * X * C]

Template Parameters
NDimSpatialNumber of spatial dimensions.
ImageLayoutInput Layout.
InputDataTypeInput Data Type.
OutputDataTypeOutput Data Type.
ConvTensorRearrangeOpOperation type: ImageToColumn, ColumnToImage.

Member Function Documentation

◆ MakeArgumentPointer()

template<index_t NDimSpatial, typename ImageLayout, typename InputDataType, typename OutputDataType, typename ConvTensorRearrangeOp>
virtual std::unique_ptr< BaseArgument > ck::tensor_operation::device::DeviceConvTensorRearrange< NDimSpatial, ImageLayout, InputDataType, OutputDataType, ConvTensorRearrangeOp >::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 )
pure virtual

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.

Implemented in ck::tensor_operation::device::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >, and ck::tensor_operation::device::DeviceImageToColumnImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >.

◆ MakeInvokerPointer()


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