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 = GridwisePermute< InGridDesc, OutGridDesc, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim -(NumDim - 3), DstVectorDim -(NumDim - 3), SrcScalarPerVector, DstScalarPerVector >
 
using Block2TileMap = typename GridwisePermute::DefaultBlock2TileMap
 
using Lengths = std::array< index_t, NumDim >
 
using Strides = Lengths
 
- 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 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 = GridwisePermute< InGridDesc, OutGridDesc, InDataType, OutDataType, ElementwiseOperation, BlockSize, NPerBlock, HPerBlock, WPerBlock, InBlockLdsExtraW, InBlockTransferThreadClusterLengths, InBlockTransferThreadClusterArrangeOrder, SrcVectorDim - (NumDim - 3), DstVectorDim - (NumDim - 3), SrcScalarPerVector, DstScalarPerVector>

◆ 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 = std::array<index_t, NumDim>

◆ 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 = Lengths

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>
static 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>
static 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>
static 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>
static 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>
static 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:
  • /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/docs-6.4.3/include/ck/tensor_operation/gpu/device/impl/device_permute_impl.hpp