ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch > Struct Template Reference#
Public Types |
Public Member Functions |
Static Public Member Functions |
Static Public Attributes |
List of all members
ck::ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch > Struct Template Reference
#include <threadwise_tensor_slice_transfer_v7r2.hpp>
Public Types | |
| using | Index = MultiIndex<nDim> |
| using | SrcCoords = decltype(MakeCoordinates(SrcDescs{}, StaticallyIndexedArray<Index, nSrc>{})) |
| using | DstCoords = decltype(MakeCoordinates(DstDescs{}, StaticallyIndexedArray<Index, nDst>{})) |
| using | SrcSpaceFillingCurve |
| using | DstSpaceFillingCurve |
Public Member Functions | |
| __device__ constexpr | ThreadwiseTensorSliceTransfer_v7r2 (const SrcDescs &src_descs, const StaticallyIndexedArray< Index, nSrc > &src_slice_origins, const DstDescs &dst_descs, const StaticallyIndexedArray< Index, nDst > &dst_slice_origins, const ElementwiseOperation &element_op) |
| template<typename Indices, enable_if_t< SrcDescs::Size()==Indices::Size(), bool > = false> | |
| __device__ void | SetSrcSliceOrigins (const SrcDescs &src_descs, const Indices &src_slice_origin_idxs) |
| template<typename Indices, enable_if_t< DstDescs::Size()==Indices::Size(), bool > = false> | |
| __device__ void | SetDstSliceOrigins (const DstDescs &dst_descs, const Indices &dst_slice_origin_idxs) |
| template<typename SrcBuffers, index_t ThreadScratchId = 0, enable_if_t< SrcDescs::Size()==SrcBuffers::Size(), bool > = false> | |
| __device__ void | RunRead (const SrcDescs &src_descs, const SrcBuffers &src_bufs, Number< ThreadScratchId > thread_scratch_id=Number< ThreadScratchId >{}) |
| template<index_t ThreadScratchId = 0> | |
| __device__ void | OOBCheck (Number< ThreadScratchId > thread_scratch_id=Number< ThreadScratchId >{}) |
| template<index_t ThreadScratchId = 0> | |
| __device__ void | TransposeFromElmToDst (Number< ThreadScratchId > thread_scratch_id=Number< ThreadScratchId >{}) |
| template<typename DstBuffers, index_t ThreadScratchId = 0, enable_if_t< DstDescs::Size()==1 &&DstBuffers::Size()==1, bool > = false> | |
| __device__ void | RunWrite (const DstDescs &dst_descs, DstBuffers dst_bufs, Number< ThreadScratchId > thread_scratch_id=Number< ThreadScratchId >{}) |
| template<typename SrcBuffers, typename DstBuffers, enable_if_t< SrcDescs::Size()==SrcBuffers::Size() &&DstDescs::Size()==DstBuffers::Size(), bool > = false> | |
| __device__ void | Run (const SrcDescs &src_descs, const SrcBuffers &src_bufs, const DstDescs &dst_descs, DstBuffers dst_bufs) |
| template<index_t ISrc> | |
| __device__ void | MoveSrcSliceWindow (const SrcDescs &src_descs, Number< ISrc > iSrc, const Index &src_slice_origin_step_idx) |
| template<index_t IDst> | |
| __device__ void | MoveDstSliceWindow (const DstDescs &dst_descs, Number< IDst > iDst, const Index &dst_slice_origin_step_idx) |
Static Public Member Functions | |
| template<typename Descs, typename Indices, enable_if_t< Descs::Size()==Indices::Size(), bool > = false> | |
| static constexpr auto | MakeCoordinates (const Descs &descs, const Indices &indices) |
| template<typename DataTypes, index_t ScalarPerVector> | |
| static __device__ auto | generate_vectors () |
| static __device__ constexpr auto | GetSrcCoordinateResetStep () |
| static __device__ constexpr auto | GetDstCoordinateResetStep () |
| static __device__ constexpr auto | GetSrcThreadScratchDescriptor () |
| static __device__ constexpr auto | GetDstThreadScratchDescriptor () |
Static Public Attributes | |
| static constexpr auto | I0 = Number<0>{} |
| static constexpr index_t | nDim = SliceLengths::Size() |
| static constexpr index_t | nSrc = SrcDescs::Size() |
| static constexpr index_t | nDst = DstDescs::Size() |
| static constexpr auto | src_scalar_per_access |
| static constexpr auto | dst_scalar_per_access |
Member Typedef Documentation
◆ DstCoords
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
| using ck::ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch >::DstCoords = decltype(MakeCoordinates(DstDescs{}, StaticallyIndexedArray<Index, nDst>{})) |
◆ DstSpaceFillingCurve
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
| using ck::ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch >::DstSpaceFillingCurve |
Initial value:
SpaceFillingCurve<SliceLengths,
DstDimAccessOrder,
false>
Definition tensor_space_filling_curve.hpp:20
static constexpr auto dst_scalar_per_access
Definition threadwise_tensor_slice_transfer_v7r2.hpp:76
◆ Index
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
| using ck::ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch >::Index = MultiIndex<nDim> |
◆ SrcCoords
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
| using ck::ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch >::SrcCoords = decltype(MakeCoordinates(SrcDescs{}, StaticallyIndexedArray<Index, nSrc>{})) |
◆ SrcSpaceFillingCurve
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
| using ck::ThreadwiseTensorSliceTransfer_v7r2< SrcDatas, DstDatas, SrcDescs, DstDescs, ElementwiseOperation, DstInMemOps, SliceLengths, SrcDimAccessOrder, DstDimAccessOrder, SrcVectorDim, DstVectorDim, SrcScalarPerVector, DstScalarPerVector, SrcResetCoordinateAfterRunFlags, DstResetCoordinateAfterRunFlags, NumThreadScratch >::SrcSpaceFillingCurve |
Initial value:
SpaceFillingCurve<SliceLengths,
SrcDimAccessOrder,
false>
static constexpr auto src_scalar_per_access
Definition threadwise_tensor_slice_transfer_v7r2.hpp:73
Constructor & Destructor Documentation
◆ ThreadwiseTensorSliceTransfer_v7r2()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
inlineconstexpr |
Member Function Documentation
◆ generate_vectors()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename DataTypes, index_t ScalarPerVector>
|
inlinestatic |
◆ GetDstCoordinateResetStep()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
inlinestaticconstexpr |
◆ GetDstThreadScratchDescriptor()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
inlinestaticconstexpr |
◆ GetSrcCoordinateResetStep()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
inlinestaticconstexpr |
◆ GetSrcThreadScratchDescriptor()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
inlinestaticconstexpr |
◆ MakeCoordinates()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename Descs, typename Indices, enable_if_t< Descs::Size()==Indices::Size(), bool > = false>
|
inlinestaticconstexpr |
◆ MoveDstSliceWindow()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<index_t IDst>
|
inline |
◆ MoveSrcSliceWindow()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<index_t ISrc>
|
inline |
◆ OOBCheck()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<index_t ThreadScratchId = 0>
|
inline |
◆ Run()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename SrcBuffers, typename DstBuffers, enable_if_t< SrcDescs::Size()==SrcBuffers::Size() &&DstDescs::Size()==DstBuffers::Size(), bool > = false>
|
inline |
◆ RunRead()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename SrcBuffers, index_t ThreadScratchId = 0, enable_if_t< SrcDescs::Size()==SrcBuffers::Size(), bool > = false>
|
inline |
◆ RunWrite()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename DstBuffers, index_t ThreadScratchId = 0, enable_if_t< DstDescs::Size()==1 &&DstBuffers::Size()==1, bool > = false>
|
inline |
◆ SetDstSliceOrigins()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename Indices, enable_if_t< DstDescs::Size()==Indices::Size(), bool > = false>
|
inline |
◆ SetSrcSliceOrigins()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<typename Indices, enable_if_t< SrcDescs::Size()==Indices::Size(), bool > = false>
|
inline |
◆ TransposeFromElmToDst()
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
template<index_t ThreadScratchId = 0>
|
inline |
Member Data Documentation
◆ dst_scalar_per_access
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
staticconstexpr |
Initial value:
__host__ __device__ constexpr auto generate_sequence(F, Number< N >)
Definition sequence_helper.hpp:18
Definition threadwise_tensor_slice_transfer_util.hpp:20
◆ I0
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
staticconstexpr |
◆ nDim
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
staticconstexpr |
◆ nDst
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
staticconstexpr |
◆ nSrc
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
staticconstexpr |
◆ src_scalar_per_access
template<typename SrcDatas, typename DstDatas, typename SrcDescs, typename DstDescs, typename ElementwiseOperation, typename DstInMemOps, typename SliceLengths, typename SrcDimAccessOrder, typename DstDimAccessOrder, index_t SrcVectorDim, index_t DstVectorDim, index_t SrcScalarPerVector, index_t DstScalarPerVector, typename SrcResetCoordinateAfterRunFlags, typename DstResetCoordinateAfterRunFlags, index_t NumThreadScratch = 1>
|
staticconstexpr |
Initial value:
The documentation for this struct was generated from the following file: