DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector > Struct Template Reference

DevicePermuteImpl&lt; NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector &gt; Struct Template Reference#

Composable Kernel: ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector > Struct Template Reference
ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector > Struct Template Reference

#include <device_permute_impl.hpp>

Inheritance diagram for ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >:
ck::tensor_operation::device::DevicePermute< NumDim, InDataType, OutDataType, ElementwiseOperation > ck::tensor_operation::device::BaseOperator

Classes

struct  Argument
struct  Invoker

Public Types

using BaseType = DevicePermute<NumDim, InDataType, OutDataType, ElementwiseOperation>
using InGridDesc = decltype(MakeDescriptor_N_H_W({1, 1}, {1, 1}))
using OutGridDesc = InGridDesc
using GridwisePermute
using Block2TileMap = typename GridwisePermute::DefaultBlock2TileMap
using Lengths
using Strides
Public Types inherited from ck::tensor_operation::device::DevicePermute< NumDim, InDataType, OutDataType, ElementwiseOperation >
using Lengths = std::array<index_t, NumDim>
using Strides = Lengths

Public Member Functions

bool IsSupportedArgument (const BaseArgument *arg) override final
std::unique_ptr< BaseArgumentMakeArgumentPointer (const Lengths &in_lengths, const Strides &in_strides, const Lengths &out_lengths, const Strides &out_strides, const void *in_dev_buffer, void *out_dev_buffer, ElementwiseOperation elementwise_op) override final
std::unique_ptr< BaseInvokerMakeInvokerPointer () override final
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 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

template<index_t N = NumDim>
static auto ConvertArrayToTuple (const std::array< index_t, NumDim > &array)
static auto MakeDescriptor_N_H_W (const Lengths &lengths, const Strides &stride)
static bool IsSupportedArgument (const Argument &arg)
template<typename... Args>
static std::enable_if_t< std::is_constructible_v< Argument, Args... >, ArgumentMakeArgument (Args &&... args) noexcept(std::is_nothrow_constructible_v< Argument, Args... >)
static std::enable_if_t< std::is_default_constructible_v< Invoker >, InvokerMakeInvoker () noexcept(std::is_nothrow_default_constructible_v< Invoker >)

Member Typedef Documentation

◆ BaseType

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::BaseType = DevicePermute<NumDim, InDataType, OutDataType, ElementwiseOperation>

◆ Block2TileMap

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::Block2TileMap = typename GridwisePermute::DefaultBlock2TileMap

◆ GridwisePermute

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::GridwisePermute
Initial value:
InDataType,
OutDataType,
ElementwiseOperation,
BlockSize,
NPerBlock,
HPerBlock,
WPerBlock,
InBlockLdsExtraW,
InBlockTransferThreadClusterLengths,
InBlockTransferThreadClusterArrangeOrder,
SrcVectorDim - (NumDim - 3),
DstVectorDim - (NumDim - 3),
SrcScalarPerVector,
DstScalarPerVector>
InGridDesc OutGridDesc
Definition device_permute_impl.hpp:90
decltype(MakeDescriptor_N_H_W({1, 1}, {1, 1})) InGridDesc
Definition device_permute_impl.hpp:89
GridwisePermute< InGridDesc, OutGridDesc, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim -(NumDim - 3), DstVectorDim -(NumDim - 3), SrcScalarPerVector, DstScalarPerVector > GridwisePermute
Definition device_permute_impl.hpp:92

◆ InGridDesc

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::InGridDesc = decltype(MakeDescriptor_N_H_W({1, 1}, {1, 1}))

◆ Lengths

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermute< NumDim, InDataType, OutDataType, ElementwiseOperation >::Lengths

◆ OutGridDesc

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::OutGridDesc = InGridDesc

◆ Strides

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
using ck::tensor_operation::device::DevicePermute< NumDim, InDataType, OutDataType, ElementwiseOperation >::Strides

Member Function Documentation

◆ ConvertArrayToTuple()

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
template<index_t N = NumDim>
auto ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::ConvertArrayToTuple ( const std::array< index_t, NumDim > & array)
inlinestatic

◆ IsSupportedArgument() [1/2]

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
bool ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::IsSupportedArgument ( const Argument & arg)
inlinestatic

◆ IsSupportedArgument() [2/2]

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
bool ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::IsSupportedArgument ( const BaseArgument * arg)
inlinefinaloverridevirtual

◆ MakeArgument()

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
template<typename... Args>
std::enable_if_t< std::is_constructible_v< Argument, Args... >, Argument > ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::MakeArgument ( Args &&... args)
inlinestaticnoexcept

◆ MakeArgumentPointer()

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
std::unique_ptr< BaseArgument > ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::MakeArgumentPointer ( const Lengths & in_lengths,
const Strides & in_strides,
const Lengths & out_lengths,
const Strides & out_strides,
const void * in_dev_buffer,
void * out_dev_buffer,
ElementwiseOperation elementwise_op )
inlinefinaloverridevirtual

◆ MakeDescriptor_N_H_W()

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
auto ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::MakeDescriptor_N_H_W ( const Lengths & lengths,
const Strides & stride )
inlinestatic

◆ MakeInvoker()

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
std::enable_if_t< std::is_default_constructible_v< Invoker >, Invoker > ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::MakeInvoker ( )
inlinestaticnoexcept

◆ MakeInvokerPointer()

template<index_t NumDim, typename InDataType, typename OutDataType, typename ElementwiseOperation, index_t BlockSize, index_t NPerBlock, index_t HPerBlock, index_t WPerBlock, index_t InBlockLdsExtraW, typename InBlockTransferThreadClusterLengths, typename InBlockTransferThreadClusterArrangeOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector>
std::unique_ptr< BaseInvoker > ck::tensor_operation::device::DevicePermuteImpl< NumDim, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector >::MakeInvokerPointer ( )
inlinefinaloverridevirtual

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