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

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

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

#include <device_column_to_image_impl.hpp>

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

Classes

struct  Argument
struct  Invoker

Public Types

using ConvToGemmFwdTransformer
using InputGridDesc
using OutputGridDesc
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 index_t GetNumberOfIndependentFilters (const index_t input_spatial_len, const index_t left_pad, const index_t right_pad, const index_t filter_len, const index_t filter_stride, const index_t filter_dilation, const index_t image_offset)
static auto MakeInputDescriptor_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, NDimSpatial > &conv_filter_strides, const std::array< index_t, 3 > &gemm_g_m_k_strides, const std::array< index_t, NDimSpatial > &independent_filters, const std::array< index_t, NDimSpatial > &effs)
static auto MakeOutDescriptor_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+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, const std::array< index_t, NDimSpatial > &image_offsets, const std::array< index_t, NDimSpatial > &independent_filters, const std::array< index_t, NDimSpatial > &effs)
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 ZIdx = Number<I0>{}
static constexpr auto YIdx = NDimSpatial == 1 ? I0 : Number<NDimSpatial - I2>{}
static constexpr auto XIdx = Number<NDimSpatial - I1>{}
static constexpr auto spatial_offset = Number<3>{}
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::DeviceColumnToImageImpl< 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(MakeInputDescriptor_M_K(1, 1, {}, {}, {}, {}, {}, {}))> InputGridDesc
Definition device_column_to_image_impl.hpp:258

◆ 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::GridwiseTensorRearrangeKernel
Initial value:
InputDataType,
OutputDataType,
BlockSize,
MPerBlock,
KPerBlock,
ThreadClusterLengths,
ScalarPerVector,
ComputePtrOffsetOfStridedBatch<>>
@ Add
Definition ck.hpp:281
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

◆ 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::DeviceColumnToImageImpl< 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 > &filter_spatial_lengths, const std::array< index_t, NDimSpatial > &output_spatial_lengths, const std::array< index_t, NDimSpatial > &conv_filter_strides, const std::array< index_t, 3 > &gemm_g_m_k_strides, const std::array< index_t, NDimSpatial > &independent_filters, const std::array< index_t, NDimSpatial > &effs)
Definition device_column_to_image_impl.hpp:99

◆ 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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::OutputGridDesc
Initial value:
1, 1, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}))>
static auto MakeOutDescriptor_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+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, const std::array< index_t, NDimSpatial > &image_offsets, const std::array< index_t, NDimSpatial > &independent_filters, const std::array< index_t, NDimSpatial > &effs)
Definition device_column_to_image_impl.hpp:180

Member Function Documentation

◆ GetNumberOfIndependentFilters()

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>
index_t ck::tensor_operation::device::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::GetNumberOfIndependentFilters ( const index_t input_spatial_len,
const index_t left_pad,
const index_t right_pad,
const index_t filter_len,
const index_t filter_stride,
const index_t filter_dilation,
const index_t image_offset )
inlinestatic

◆ 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::ColumnToImage >.

◆ 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::DeviceColumnToImageImpl< 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 > & filter_spatial_lengths,
const std::array< index_t, NDimSpatial > & output_spatial_lengths,
const std::array< index_t, NDimSpatial > & conv_filter_strides,
const std::array< index_t, 3 > & gemm_g_m_k_strides,
const std::array< index_t, NDimSpatial > & independent_filters,
const std::array< index_t, NDimSpatial > & effs )
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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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 > & input_spatial_lengths,
const std::array< index_t, NDimSpatial > & filter_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,
const std::array< index_t, NDimSpatial > & image_offsets,
const std::array< index_t, NDimSpatial > & independent_filters,
const std::array< index_t, NDimSpatial > & effs )
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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< 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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::matrix_padder
staticconstexpr
Initial value:

◆ spatial_offset

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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::spatial_offset = Number<3>{}
staticconstexpr

◆ XIdx

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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::XIdx = Number<NDimSpatial - I1>{}
staticconstexpr

◆ YIdx

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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::YIdx = NDimSpatial == 1 ? I0 : Number<NDimSpatial - I2>{}
staticconstexpr

◆ ZIdx

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::DeviceColumnToImageImpl< NDimSpatial, ImageLayout, InputDataType, OutputDataType, BlockSize, MPerBlock, KPerBlock, ThreadClusterLengths, ScalarPerVector,, bool, type >::ZIdx = Number<I0>{}
staticconstexpr

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