Merge_v2_magic_division< LowLengths > Struct Template Reference

Merge_v2_magic_division&lt; LowLengths &gt; Struct Template Reference#

Composable Kernel: ck::Merge_v2_magic_division< LowLengths > Struct Template Reference
ck::Merge_v2_magic_division< LowLengths > Struct Template Reference

#include <multi_index_transform.hpp>

Public Types

using LowerIndex = MultiIndex<NDimLow>
using UpperIndex = MultiIndex<1>
using UpLengths
using LowLengthsMagicDivisorMultipiler
using LowLengthsMagicDivisorShift

Public Member Functions

__host__ __device__ constexpr Merge_v2_magic_division ()=default
__host__ __device__ constexpr Merge_v2_magic_division (const LowLengths &low_lengths)
__host__ __device__ constexpr const auto & GetUpperLengths () const
template<typename LowIdx, typename UpIdx>
__host__ __device__ constexpr 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 __device__ constexpr index_t GetNumOfLowerDimension ()
__host__ static __device__ constexpr index_t GetNumOfUpperDimension ()
__host__ static __device__ constexpr bool IsLinearTransform ()
__host__ static __device__ constexpr bool IsValidUpperIndexAlwaysMappedToValidLowerIndex ()
__host__ static __device__ constexpr bool IsKnownAtCompileTime ()
template<typename UpIdx>
__host__ static __device__ constexpr bool IsValidUpperIndexMappedToValidLowerIndex (const UpIdx &)

Public Attributes

LowLengths low_lengths_
LowLengthsMagicDivisorMultipiler low_lengths_magic_divisor_multiplier_
LowLengthsMagicDivisorShift low_lengths_magic_divisor_shift_
UpLengths up_lengths_

Static Public Attributes

static constexpr index_t NDimLow = LowLengths::Size()

Member Typedef Documentation

◆ LowerIndex

template<typename LowLengths>
using ck::Merge_v2_magic_division< LowLengths >::LowerIndex = MultiIndex<NDimLow>

◆ LowLengthsMagicDivisorMultipiler

template<typename LowLengths>
using ck::Merge_v2_magic_division< LowLengths >::LowLengthsMagicDivisorMultipiler
Initial value:
decltype(generate_tuple(
integral_constant< index_t, N > Number
Definition number.hpp:12
__host__ __device__ constexpr auto generate_tuple(F &&f, Number< N >)
Definition tuple_helper.hpp:21

◆ LowLengthsMagicDivisorShift

template<typename LowLengths>
using ck::Merge_v2_magic_division< LowLengths >::LowLengthsMagicDivisorShift

◆ UpLengths

template<typename LowLengths>
using ck::Merge_v2_magic_division< LowLengths >::UpLengths
Initial value:
decltype(make_tuple(container_reduce(LowLengths{}, math::multiplies{}, Number<1>{})))
__host__ __device__ constexpr auto container_reduce(const Container &x, Reduce reduce, Init init, Number< IBegin >=Number< 0 >{}, Number< IEnd >=Number< Container::Size()>{}, Number< IStep >=Number< 1 >{})
Definition utility/container_helper.hpp:111
__host__ __device__ constexpr auto make_tuple(Xs &&... xs)
Definition utility/tuple.hpp:211
Definition utility/math.hpp:34

◆ UpperIndex

template<typename LowLengths>
using ck::Merge_v2_magic_division< LowLengths >::UpperIndex = MultiIndex<1>

Constructor & Destructor Documentation

◆ Merge_v2_magic_division() [1/2]

template<typename LowLengths>
__host__ __device__ constexpr ck::Merge_v2_magic_division< LowLengths >::Merge_v2_magic_division ( )
constexprdefault

◆ Merge_v2_magic_division() [2/2]

template<typename LowLengths>
__host__ __device__ constexpr ck::Merge_v2_magic_division< LowLengths >::Merge_v2_magic_division ( const LowLengths & low_lengths)
inlineconstexpr

Member Function Documentation

◆ CalculateLowerIndex()

template<typename LowLengths>
template<typename LowIdx, typename UpIdx>
__host__ __device__ constexpr void ck::Merge_v2_magic_division< LowLengths >::CalculateLowerIndex ( LowIdx & idx_low,
const UpIdx & idx_up ) const
inlineconstexpr

◆ GetNumOfLowerDimension()

template<typename LowLengths>
__host__ static __device__ constexpr index_t ck::Merge_v2_magic_division< LowLengths >::GetNumOfLowerDimension ( )
inlinestaticconstexpr

◆ GetNumOfUpperDimension()

template<typename LowLengths>
__host__ static __device__ constexpr index_t ck::Merge_v2_magic_division< LowLengths >::GetNumOfUpperDimension ( )
inlinestaticconstexpr

◆ GetUpperLengths()

template<typename LowLengths>
__host__ __device__ constexpr const auto & ck::Merge_v2_magic_division< LowLengths >::GetUpperLengths ( ) const
inlineconstexpr

◆ IsKnownAtCompileTime()

template<typename LowLengths>
__host__ static __device__ constexpr bool ck::Merge_v2_magic_division< LowLengths >::IsKnownAtCompileTime ( )
inlinestaticconstexpr

◆ IsLinearTransform()

template<typename LowLengths>
__host__ static __device__ constexpr bool ck::Merge_v2_magic_division< LowLengths >::IsLinearTransform ( )
inlinestaticconstexpr

◆ IsValidUpperIndexAlwaysMappedToValidLowerIndex()

template<typename LowLengths>
__host__ static __device__ constexpr bool ck::Merge_v2_magic_division< LowLengths >::IsValidUpperIndexAlwaysMappedToValidLowerIndex ( )
inlinestaticconstexpr

◆ IsValidUpperIndexMappedToValidLowerIndex()

template<typename LowLengths>
template<typename UpIdx>
__host__ static __device__ constexpr bool ck::Merge_v2_magic_division< LowLengths >::IsValidUpperIndexMappedToValidLowerIndex ( const UpIdx & )
inlinestaticconstexpr

◆ Print()

template<typename LowLengths>
__host__ __device__ void ck::Merge_v2_magic_division< LowLengths >::Print ( ) const
inline

◆ UpdateLowerIndex()

template<typename LowLengths>
template<typename LowIdxDiff, typename UpIdxDiff, typename LowIdx, typename UpIdx, index_t Hack>
__host__ __device__ void ck::Merge_v2_magic_division< LowLengths >::UpdateLowerIndex ( LowIdxDiff & idx_diff_low,
const UpIdxDiff & ,
LowIdx & idx_low,
const UpIdx & idx_up_new,
Number< Hack >  ) const
inline

Member Data Documentation

◆ low_lengths_

template<typename LowLengths>
LowLengths ck::Merge_v2_magic_division< LowLengths >::low_lengths_

◆ low_lengths_magic_divisor_multiplier_

template<typename LowLengths>
LowLengthsMagicDivisorMultipiler ck::Merge_v2_magic_division< LowLengths >::low_lengths_magic_divisor_multiplier_

◆ low_lengths_magic_divisor_shift_

template<typename LowLengths>
LowLengthsMagicDivisorShift ck::Merge_v2_magic_division< LowLengths >::low_lengths_magic_divisor_shift_

◆ NDimLow

template<typename LowLengths>
index_t ck::Merge_v2_magic_division< LowLengths >::NDimLow = LowLengths::Size()
staticconstexpr

◆ up_lengths_

template<typename LowLengths>
UpLengths ck::Merge_v2_magic_division< LowLengths >::up_lengths_

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