Merge_v2r2_magic_division< LowLengths > Struct Template Reference#
Public Types |
Public Member Functions |
Static Public Member Functions |
Public Attributes |
Static Public Attributes |
List of all members
ck::Merge_v2r2_magic_division< LowLengths > Struct Template Reference
#include <multi_index_transform.hpp>
Public Types | |
using | LowerIndex = MultiIndex< NDimLow > |
using | UpperIndex = MultiIndex< 1 > |
using | LowLengthsScan = decltype(container_reverse_exclusive_scan(LowLengths{}, math::multiplies{}, Number< 1 >{})) |
using | UpLengths = decltype(make_tuple(container_reduce(LowLengths{}, math::multiplies{}, Number< 1 >{}))) |
using | LowLengthsScanMagicDivisorMultipiler = decltype(generate_tuple(lambda_merge_generate_MagicDivision_calculate_magic_multiplier< LowLengthsScan >{}, Number< NDimLow >{})) |
using | LowLengthsScanMagicDivisorShift = decltype(generate_tuple(lambda_merge_generate_MagicDivision_calculate_magic_shift< LowLengthsScan >{}, Number< NDimLow >{})) |
Public Member Functions | |
__host__ constexpr __device__ | Merge_v2r2_magic_division ()=default |
__host__ constexpr __device__ | Merge_v2r2_magic_division (const LowLengths &low_lengths) |
__host__ constexpr __device__ const auto & | GetUpperLengths () const |
template<typename LowIdx , typename UpIdx > | |
__host__ constexpr __device__ void | CalculateLowerIndex (LowIdx &idx_low, const UpIdx &idx_up) const |
template<typename LowIdxDiff , typename UpIdxDiff , typename LowIdx , typename UpIdx , index_t Hack> | |
__host__ __device__ void | UpdateLowerIndex (LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up_new, Number< Hack >) const |
__host__ __device__ void | Print () const |
Static Public Member Functions | |
__host__ static constexpr __device__ index_t | GetNumOfLowerDimension () |
__host__ static constexpr __device__ index_t | GetNumOfUpperDimension () |
__host__ static constexpr __device__ bool | IsLinearTransform () |
__host__ static constexpr __device__ bool | IsValidUpperIndexAlwaysMappedToValidLowerIndex () |
__host__ static constexpr __device__ bool | IsKnownAtCompileTime () |
template<typename UpIdx > | |
__host__ static constexpr __device__ bool | IsValidUpperIndexMappedToValidLowerIndex (const UpIdx &) |
Static Public Attributes | |
static constexpr index_t | NDimLow = LowLengths::Size() |
Member Typedef Documentation
◆ LowerIndex
template<typename LowLengths >
using ck::Merge_v2r2_magic_division< LowLengths >::LowerIndex = MultiIndex<NDimLow> |
◆ LowLengthsScan
template<typename LowLengths >
using ck::Merge_v2r2_magic_division< LowLengths >::LowLengthsScan = decltype(container_reverse_exclusive_scan(LowLengths{}, math::multiplies{}, Number<1>{})) |
◆ LowLengthsScanMagicDivisorMultipiler
template<typename LowLengths >
using ck::Merge_v2r2_magic_division< LowLengths >::LowLengthsScanMagicDivisorMultipiler = decltype(generate_tuple( lambda_merge_generate_MagicDivision_calculate_magic_multiplier<LowLengthsScan>{}, Number<NDimLow>{})) |
◆ LowLengthsScanMagicDivisorShift
template<typename LowLengths >
using ck::Merge_v2r2_magic_division< LowLengths >::LowLengthsScanMagicDivisorShift = decltype(generate_tuple( lambda_merge_generate_MagicDivision_calculate_magic_shift<LowLengthsScan>{}, Number<NDimLow>{})) |
◆ UpLengths
template<typename LowLengths >
using ck::Merge_v2r2_magic_division< LowLengths >::UpLengths = decltype(make_tuple(container_reduce(LowLengths{}, math::multiplies{}, Number<1>{}))) |
◆ UpperIndex
template<typename LowLengths >
using ck::Merge_v2r2_magic_division< LowLengths >::UpperIndex = MultiIndex<1> |
Constructor & Destructor Documentation
◆ Merge_v2r2_magic_division() [1/2]
template<typename LowLengths >
|
constexprdefault |
◆ Merge_v2r2_magic_division() [2/2]
template<typename LowLengths >
|
inlineconstexpr |
Member Function Documentation
◆ CalculateLowerIndex()
template<typename LowLengths >
template<typename LowIdx , typename UpIdx >
|
inlineconstexpr |
◆ GetNumOfLowerDimension()
template<typename LowLengths >
|
inlinestaticconstexpr |
◆ GetNumOfUpperDimension()
template<typename LowLengths >
|
inlinestaticconstexpr |
◆ GetUpperLengths()
template<typename LowLengths >
|
inlineconstexpr |
◆ IsKnownAtCompileTime()
template<typename LowLengths >
|
inlinestaticconstexpr |
◆ IsLinearTransform()
template<typename LowLengths >
|
inlinestaticconstexpr |
◆ IsValidUpperIndexAlwaysMappedToValidLowerIndex()
template<typename LowLengths >
|
inlinestaticconstexpr |
◆ IsValidUpperIndexMappedToValidLowerIndex()
template<typename LowLengths >
template<typename UpIdx >
|
inlinestaticconstexpr |
◆ Print()
template<typename LowLengths >
|
inline |
◆ UpdateLowerIndex()
template<typename LowLengths >
template<typename LowIdxDiff , typename UpIdxDiff , typename LowIdx , typename UpIdx , index_t Hack>
|
inline |
Member Data Documentation
◆ low_lengths_
template<typename LowLengths >
LowLengths ck::Merge_v2r2_magic_division< LowLengths >::low_lengths_ |
◆ low_lengths_scan_
template<typename LowLengths >
LowLengthsScan ck::Merge_v2r2_magic_division< LowLengths >::low_lengths_scan_ |
◆ low_lengths_scan_magic_divisor_multiplier_
template<typename LowLengths >
LowLengthsScanMagicDivisorMultipiler ck::Merge_v2r2_magic_division< LowLengths >::low_lengths_scan_magic_divisor_multiplier_ |
◆ low_lengths_scan_magic_divisor_shift_
template<typename LowLengths >
LowLengthsScanMagicDivisorShift ck::Merge_v2r2_magic_division< LowLengths >::low_lengths_scan_magic_divisor_shift_ |
◆ NDimLow
template<typename LowLengths >
|
staticconstexpr |
◆ up_lengths_
template<typename LowLengths >
UpLengths ck::Merge_v2r2_magic_division< LowLengths >::up_lengths_ |
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_description/multi_index_transform.hpp