/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck/utility/sequence.hpp File Reference

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck/utility/sequence.hpp File Reference#

Composable Kernel: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck/utility/sequence.hpp File Reference
sequence.hpp File Reference
#include <ostream>
#include "ck/utility/integral_constant.hpp"
#include "ck/utility/type.hpp"
#include "ck/utility/functional.hpp"
#include "ck/utility/math.hpp"

Go to the source code of this file.

Classes

struct  ck::Sequence< Is >
 
struct  ck::impl::__integer_sequence< index_t, Ints... >
 
struct  ck::sequence_merge< Seq, Seqs >
 
struct  ck::sequence_merge< Sequence< Xs... >, Sequence< Ys... > >
 
struct  ck::sequence_merge< Seq >
 
struct  ck::sequence_gen< NSize, F >
 
struct  ck::sequence_gen< NSize, F >::sequence_gen_impl< IBegin, NRemain, G >
 
struct  ck::sequence_gen< NSize, F >::sequence_gen_impl< I, 1, G >
 
struct  ck::sequence_gen< NSize, F >::sequence_gen_impl< I, 0, G >
 
struct  ck::arithmetic_sequence_gen< IBegin, IEnd, Increment >
 
struct  ck::arithmetic_sequence_gen< IBegin, IEnd, Increment >::F
 
struct  ck::arithmetic_sequence_gen< 0, IEnd, 1 >
 
struct  ck::arithmetic_sequence_gen< 0, IEnd, 1 >::WrapSequence< T, Ints >
 
struct  ck::uniform_sequence_gen< NSize, I >
 
struct  ck::uniform_sequence_gen< NSize, I >::F
 
struct  ck::sequence_reverse_inclusive_scan< Sequence< I, Is... >, Reduce, Init >
 
struct  ck::sequence_reverse_inclusive_scan< Sequence< I >, Reduce, Init >
 
struct  ck::sequence_reverse_inclusive_scan< Sequence<>, Reduce, Init >
 
struct  ck::sequence_split< Seq, I >
 
struct  ck::sequence_reverse< Seq >
 
struct  ck::sequence_reverse< Sequence< I > >
 
struct  ck::sequence_reverse< Sequence< I0, I1 > >
 
struct  ck::sequence_reduce< Reduce, Seq, Seqs >
 
struct  ck::sequence_reduce< Reduce, Sequence< Xs... >, Sequence< Ys... > >
 
struct  ck::sequence_reduce< Reduce, Seq >
 
struct  ck::sequence_sort_impl< Values, Ids, Compare >
 
struct  ck::sequence_sort_impl< Values, Ids, Compare >::sorted_sequence_merge_impl< LeftValues, LeftIds, RightValues, RightIds, MergedValues, MergedIds, Comp >
 
struct  ck::sequence_sort_impl< Values, Ids, Compare >::sorted_sequence_merge_impl< LeftValues, LeftIds, Sequence<>, Sequence<>, MergedValues, MergedIds, Comp >
 
struct  ck::sequence_sort_impl< Values, Ids, Compare >::sorted_sequence_merge_impl< Sequence<>, Sequence<>, RightValues, RightIds, MergedValues, MergedIds, Comp >
 
struct  ck::sequence_sort_impl< Values, Ids, Compare >::sorted_sequence_merge< LeftValues, LeftIds, RightValues, RightIds, Comp >
 
struct  ck::sequence_sort_impl< Sequence< ValueX, ValueY >, Sequence< IdX, IdY >, Compare >
 
struct  ck::sequence_sort_impl< Sequence< Value >, Sequence< Id >, Compare >
 
struct  ck::sequence_sort_impl< Sequence<>, Sequence<>, Compare >
 
struct  ck::sequence_sort< Values, Compare >
 
struct  ck::sequence_unique_sort< Values, Less, Equal >
 
struct  ck::sequence_unique_sort< Values, Less, Equal >::sorted_sequence_uniquify_impl< RemainValues, RemainIds, UniquifiedValues, UniquifiedIds, Eq >
 
struct  ck::sequence_unique_sort< Values, Less, Equal >::sorted_sequence_uniquify_impl< Sequence<>, Sequence<>, UniquifiedValues, UniquifiedIds, Eq >
 
struct  ck::sequence_unique_sort< Values, Less, Equal >::sorted_sequence_uniquify< SortedValues, SortedIds, Eq >
 
struct  ck::is_valid_sequence_map< SeqMap >
 
struct  ck::sequence_map_inverse< SeqMap >
 
struct  ck::sequence_map_inverse< SeqMap >::sequence_map_inverse_impl< X2Y, WorkingY2X, XBegin, XRemain >
 
struct  ck::sequence_map_inverse< SeqMap >::sequence_map_inverse_impl< X2Y, WorkingY2X, XBegin, 0 >
 
struct  ck::detail::pick_sequence_elements_by_mask_impl< WorkSeq, RemainSeq, RemainMask >
 
struct  ck::detail::pick_sequence_elements_by_mask_impl< WorkSeq, Sequence<>, Sequence<> >
 
struct  ck::detail::modify_sequence_elements_by_ids_impl< WorkSeq, RemainValues, RemainIds >
 
struct  ck::detail::modify_sequence_elements_by_ids_impl< WorkSeq, Sequence<>, Sequence<> >
 

Namespaces

 ck
 
 ck::impl
 
 ck::detail
 

Typedefs

template<index_t N>
using ck::make_index_sequence = typename __make_integer_seq< impl::__integer_sequence, index_t, N >::seq_type
 
template<typename Sx , typename Sy >
using ck::sequence_merge_t = typename sequence_merge< Sx, Sy >::type
 
template<index_t NSize, index_t I>
using ck::uniform_sequence_gen_t = typename uniform_sequence_gen< NSize, I >::type
 

Functions

template<index_t I, index_t... Is>
__host__ constexpr __device__ auto ck::sequence_pop_front (Sequence< I, Is... >)
 
template<typename Seq >
__host__ constexpr __device__ auto ck::sequence_pop_back (Seq)
 
template<index_t... Xs, index_t... Ys>
__host__ constexpr __device__ bool ck::operator== (Sequence< Xs... >, Sequence< Ys... >)
 
template<index_t... Xs, index_t... Ys>
__host__ constexpr __device__ auto ck::operator+ (Sequence< Xs... >, Sequence< Ys... >)
 
template<index_t... Xs, index_t... Ys>
__host__ constexpr __device__ auto ck::operator- (Sequence< Xs... >, Sequence< Ys... >)
 
template<index_t... Xs, index_t... Ys>
__host__ constexpr __device__ auto ck::operator* (Sequence< Xs... >, Sequence< Ys... >)
 
template<index_t... Xs, index_t... Ys>
__host__ constexpr __device__ auto ck::operator/ (Sequence< Xs... >, Sequence< Ys... >)
 
template<index_t... Xs, index_t... Ys>
__host__ constexpr __device__ auto ck::operator% (Sequence< Xs... >, Sequence< Ys... >)
 
template<index_t... Xs, index_t Y>
__host__ constexpr __device__ auto ck::operator+ (Sequence< Xs... >, Number< Y >)
 
template<index_t... Xs, index_t Y>
__host__ constexpr __device__ auto ck::operator- (Sequence< Xs... >, Number< Y >)
 
template<index_t... Xs, index_t Y>
__host__ constexpr __device__ auto ck::operator* (Sequence< Xs... >, Number< Y >)
 
template<index_t... Xs, index_t Y>
__host__ constexpr __device__ auto ck::operator/ (Sequence< Xs... >, Number< Y >)
 
template<index_t... Xs, index_t Y>
__host__ constexpr __device__ auto ck::operator% (Sequence< Xs... >, Number< Y >)
 
template<index_t Y, index_t... Xs>
__host__ constexpr __device__ auto ck::operator+ (Number< Y >, Sequence< Xs... >)
 
template<index_t Y, index_t... Xs>
__host__ constexpr __device__ auto ck::operator- (Number< Y >, Sequence< Xs... >)
 
template<index_t Y, index_t... Xs>
__host__ constexpr __device__ auto ck::operator* (Number< Y >, Sequence< Xs... >)
 
template<index_t Y, index_t... Xs>
__host__ constexpr __device__ auto ck::operator/ (Number< Y >, Sequence< Xs... >)
 
template<index_t Y, index_t... Xs>
__host__ constexpr __device__ auto ck::operator% (Number< Y >, Sequence< Xs... >)
 
template<typename... Seqs>
__host__ constexpr __device__ auto ck::merge_sequences (Seqs...)
 
template<typename F , index_t... Xs>
__host__ constexpr __device__ auto ck::transform_sequences (F f, Sequence< Xs... >)
 
template<typename F , index_t... Xs, index_t... Ys>
__host__ constexpr __device__ auto ck::transform_sequences (F f, Sequence< Xs... >, Sequence< Ys... >)
 
template<typename F , index_t... Xs, index_t... Ys, index_t... Zs>
__host__ constexpr __device__ auto ck::transform_sequences (F f, Sequence< Xs... >, Sequence< Ys... >, Sequence< Zs... >)
 
template<typename Seq , typename Reduce , index_t Init>
__host__ constexpr __device__ auto ck::reverse_inclusive_scan_sequence (Seq, Reduce, Number< Init >)
 
template<typename Seq , typename Reduce , index_t Init>
__host__ constexpr __device__ auto ck::reverse_exclusive_scan_sequence (Seq, Reduce, Number< Init >)
 
template<typename Seq , typename Reduce , index_t Init>
__host__ constexpr __device__ auto ck::inclusive_scan_sequence (Seq, Reduce, Number< Init >)
 
template<typename Seq , index_t... Is>
__host__ constexpr __device__ auto ck::pick_sequence_elements_by_ids (Seq, Sequence< Is... >)
 
template<typename Seq , typename Mask >
__host__ constexpr __device__ auto ck::pick_sequence_elements_by_mask (Seq, Mask)
 
template<typename Seq , typename Values , typename Ids >
__host__ constexpr __device__ auto ck::modify_sequence_elements_by_ids (Seq, Values, Ids)
 
template<typename Seq , typename Reduce , index_t Init>
__host__ constexpr __device__ index_t ck::reduce_on_sequence (Seq, Reduce f, Number< Init >)
 
template<typename Seq , typename F >
__host__ constexpr __device__ bool ck::sequence_any_of (Seq, F f)
 
template<typename Seq , typename F >
__host__ constexpr __device__ bool ck::sequence_all_of (Seq, F f)
 
template<ck::index_t... Is>
std::ostream & operator<< (std::ostream &os, const ck::Sequence< Is... >)
 

Function Documentation

◆ operator<<()

template<ck::index_t... Is>
std::ostream& operator<< ( std::ostream &  os,
const ck::Sequence< Is... >   
)