DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize > Struct Template Reference

DeviceMaxPoolBwdImpl&lt; DOutDataType, IndexDataType, DInDataType, InOutVectorSize &gt; Struct Template Reference#

Composable Kernel: ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize > Struct Template Reference
ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize > Struct Template Reference

#include <device_max_pool_bwd_impl.hpp>

Inheritance diagram for ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >:
ck::tensor_operation::device::DeviceMaxPoolBwd< DOutDataType, IndexDataType, DInDataType > ck::tensor_operation::device::BaseOperator

Classes

struct  Argument
 
struct  Invoker
 

Public Types

using DInDataType_AutomicAddPreCast = conditional_t< is_same_v< DInDataType, float >||is_same_v< DInDataType, double >, DInDataType, float >
 
using PassThrough = ck::tensor_operation::element_wise::PassThrough
 
using UnaryConvert = ck::tensor_operation::element_wise::UnaryConvert
 
using InOutGrid1dDesc = decltype(MakeDescriptor_M(1, 1))
 
using InOutGrid2dDesc = decltype(ExpendDescFirstDim(InOutGrid1dDesc{}))
 
using GridwisePutElementSet = GridwisePutElement_1D< InOutGrid1dDesc, DOutDataType, IndexDataType, DInDataType, PassThrough, InMemoryDataOperationEnum::Set, InOutVectorSize >
 
using GridwisePutElementAtomicAdd = GridwisePutElement_1D< InOutGrid1dDesc, DOutDataType, IndexDataType, DInDataType_AutomicAddPreCast, PassThrough, InMemoryDataOperationEnum::AtomicAdd, InOutVectorSize >
 
using Block2TileMap = BlockToCTileMap_M00_N0_M01Adapt< MPerBlock, NPerBlock >
 
using GridwiseCasting = GridwiseElementwise< Tuple< InOutGrid2dDesc >, Tuple< InOutGrid2dDesc >, Tuple< const DInDataType_AutomicAddPreCast * >, Tuple< DInDataType * >, Block2TileMap, UnaryConvert, BlockSize, MPerBlock, NPerBlock, MPerThread, NPerThread, Sequence< 0, 1 >, Sequence< InOutVectorSize >, Sequence< InOutVectorSize >, I1, I1 >
 

Public Member Functions

size_t GetWorkSpaceSize (const BaseArgument *pArg) const override
 
bool IsSupportedArgument (const BaseArgument *p_arg) override
 
std::unique_ptr< BaseArgumentMakeArgumentPointer (const void *p_dout, const void *p_indices, void *p_din, index_t dout_length, index_t din_length, std::vector< ck::index_t > window_lengths, std::vector< ck::index_t > window_strides, std::vector< ck::index_t > window_dilations) override
 
std::unique_ptr< BaseInvokerMakeInvokerPointer () override
 
- Public Member Functions inherited from ck::tensor_operation::device::BaseOperator
 BaseOperator ()=default
 
 BaseOperator (const BaseOperator &)=default
 
BaseOperatoroperator= (const BaseOperator &)=default
 
virtual std::string GetTypeString () 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 void SetWorkSpacePointer (BaseArgument *p_arg, void *p_workspace, const StreamConfig &=StreamConfig{}) const
 
virtual ~BaseOperator ()
 

Static Public Member Functions

template<typename Desc_M >
static auto PadDescriptor_M_1d (Desc_M &desc_m, index_t loop_step)
 
static auto MakeDescriptor_M (index_t length, index_t loop_step)
 
template<typename Desc_M >
static auto ExpendDescFirstDim (Desc_M desc_m)
 

Static Public Attributes

static constexpr auto I0 = Number<0>{}
 
static constexpr auto I1 = Number<1>{}
 
static constexpr index_t BlockSize = 256
 
static constexpr index_t MPerThread = 1
 
static constexpr index_t NPerThread = InOutVectorSize
 
static constexpr index_t MPerBlock = 1
 
static constexpr index_t NPerBlock = BlockSize * NPerThread
 

Member Typedef Documentation

◆ Block2TileMap

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::Block2TileMap = BlockToCTileMap_M00_N0_M01Adapt<MPerBlock, NPerBlock>

◆ DInDataType_AutomicAddPreCast

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::DInDataType_AutomicAddPreCast = conditional_t<is_same_v<DInDataType, float> || is_same_v<DInDataType, double>, DInDataType, float>

◆ GridwiseCasting

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::GridwiseCasting = GridwiseElementwise<Tuple<InOutGrid2dDesc>, Tuple<InOutGrid2dDesc>, Tuple<const DInDataType_AutomicAddPreCast*>, Tuple<DInDataType*>, Block2TileMap, UnaryConvert, BlockSize, MPerBlock, NPerBlock, MPerThread, NPerThread, Sequence<0, 1>, Sequence<InOutVectorSize>, Sequence<InOutVectorSize>, I1, I1>

◆ GridwisePutElementAtomicAdd

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::GridwisePutElementAtomicAdd = GridwisePutElement_1D<InOutGrid1dDesc, DOutDataType, IndexDataType, DInDataType_AutomicAddPreCast, PassThrough, InMemoryDataOperationEnum::AtomicAdd, InOutVectorSize>

◆ GridwisePutElementSet

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::GridwisePutElementSet = GridwisePutElement_1D<InOutGrid1dDesc, DOutDataType, IndexDataType, DInDataType, PassThrough, InMemoryDataOperationEnum::Set, InOutVectorSize>

◆ InOutGrid1dDesc

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::InOutGrid1dDesc = decltype(MakeDescriptor_M(1, 1))

◆ InOutGrid2dDesc

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::InOutGrid2dDesc = decltype(ExpendDescFirstDim(InOutGrid1dDesc{}))

◆ PassThrough

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::PassThrough = ck::tensor_operation::element_wise::PassThrough

◆ UnaryConvert

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
using ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::UnaryConvert = ck::tensor_operation::element_wise::UnaryConvert

Member Function Documentation

◆ ExpendDescFirstDim()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
template<typename Desc_M >
static auto ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::ExpendDescFirstDim ( Desc_M  desc_m)
inlinestatic

◆ GetWorkSpaceSize()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
size_t ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::GetWorkSpaceSize ( const BaseArgument pArg) const
inlineoverridevirtual

◆ IsSupportedArgument()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
bool ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::IsSupportedArgument ( const BaseArgument p_arg)
inlineoverridevirtual

◆ MakeArgumentPointer()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
std::unique_ptr<BaseArgument> ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::MakeArgumentPointer ( const void *  p_dout,
const void *  p_indices,
void *  p_din,
index_t  dout_length,
index_t  din_length,
std::vector< ck::index_t window_lengths,
std::vector< ck::index_t window_strides,
std::vector< ck::index_t window_dilations 
)
inlineoverridevirtual

◆ MakeDescriptor_M()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
static auto ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::MakeDescriptor_M ( index_t  length,
index_t  loop_step 
)
inlinestatic

◆ MakeInvokerPointer()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
std::unique_ptr<BaseInvoker> ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::MakeInvokerPointer ( )
inlineoverridevirtual

◆ PadDescriptor_M_1d()

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
template<typename Desc_M >
static auto ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::PadDescriptor_M_1d ( Desc_M &  desc_m,
index_t  loop_step 
)
inlinestatic

Member Data Documentation

◆ BlockSize

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr index_t ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::BlockSize = 256
staticconstexpr

◆ I0

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr auto ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::I0 = Number<0>{}
staticconstexpr

◆ I1

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr auto ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::I1 = Number<1>{}
staticconstexpr

◆ MPerBlock

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr index_t ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::MPerBlock = 1
staticconstexpr

◆ MPerThread

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr index_t ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::MPerThread = 1
staticconstexpr

◆ NPerBlock

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr index_t ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::NPerBlock = BlockSize * NPerThread
staticconstexpr

◆ NPerThread

template<typename DOutDataType , typename IndexDataType , typename DInDataType , ck::index_t InOutVectorSize>
constexpr index_t ck::tensor_operation::device::DeviceMaxPoolBwdImpl< DOutDataType, IndexDataType, DInDataType, InOutVectorSize >::NPerThread = InOutVectorSize
staticconstexpr

The documentation for this struct was generated from the following file:
  • /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-7.0.1/include/ck/tensor_operation/gpu/device/impl/device_max_pool_bwd_impl.hpp