Cutlass
CUDA Templates for Linear Algebra Subroutines and Solvers
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
cutlass::ZipTileIterator< First_, Second_ > Class Template Reference

Constructs an iterator from a pair of iterators.

#include <zip_tile_iterator.h>

Classes

struct  Params
 Params object. More...
 

Public Types

typedef First_ First
 First iterator type. More...
 
typedef Second_ Second
 Second iterator type. More...
 
typedef ZipFragment< typename First::Fragment, typename Second::Fragment > Fragment
 Fragment type. More...
 
typedef First::PredicateVector PredicateVector
 Predicate vector. More...
 
typedef platform::Pair< typename First::Index, typename Second::Index > Index
 Index type. More...
 
typedef platform::Pair< typename First::LongIndex, typename Second::LongIndex > LongIndex
 Long index type. More...
 
typedef ZipTensorRef< typename First::TensorRef, typename Second::TensorRef > TensorRef
 Tensor reference. More...
 

Public Member Functions

CUTLASS_DEVICE ZipTileIterator ()
 Default constructor. More...
 
CUTLASS_DEVICE ZipTileIterator (Params const &_params, Coord< 3 > const &threadblock_offset=make_Coord(0, 0, 0))
 Constructs a zip iterator from params. More...
 
CUTLASS_DEVICE ZipTileIterator (First const &_first, Second const &_second)
 Constructs a zip iterator from iterator instances. More...
 
CUTLASS_DEVICE ZipTileIterator (TensorRef const &ref)
 Constructs a zip iterator from iterator instances. More...
 
CUTLASS_DEVICE ZipTileIterator (Params const &_params, TensorRef const &ref)
 Constructs a zip iterator from iterator instances. More...
 
template<typename PredicateIterator >
CUTLASS_HOST_DEVICE void initialize_predicates (PredicateIterator predicate_it, Coord< 3 > const &bounds, Coord< 3 > const &block_offset=make_Coord(0, 0, 0))
 Initializes a predicate vector using a RegularTilePredicateFunctor. More...
 
template<typename PredicateIterator , typename PredicateFunctor >
CUTLASS_HOST_DEVICE void initialize_predicates (PredicateIterator predicate_it, PredicateFunctor const &functor, Coord< 3 > const &block_offset)
 Initializes a predicate vector using an arbitrary predicate functor. More...
 
template<typename Fragment >
CUTLASS_DEVICE void load_post_increment (Fragment &fragment)
 Loads a fragment and increments without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void load_post_increment (Fragment &fragment, Coord< 4 > const &offset)
 Loads a fragment and increments without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void load (Fragment &fragment) const
 Loads a fragment without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void load (Fragment &fragment, Coord< 4 > const &offset) const
 Loads a fragment without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void store_post_increment (Fragment const &fragment)
 Stores a fragment and increments without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void store_post_increment (Fragment const &fragment, Coord< 4 > const &offset)
 Stores a fragment and increments without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void store (Fragment const &fragment) const
 Stores a fragment without predicates. More...
 
template<typename Fragment >
CUTLASS_DEVICE void store (Fragment const &fragment, Coord< 4 > const &offset) const
 Stores a fragment without predicates. More...
 
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void load_post_increment (Fragment &fragment, PredicateIterator pred_it)
 Loads a fragment and increments, using predicates. More...
 
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void load (Fragment &fragment, PredicateIterator pred_it) const
 Loads a fragment with predicates. More...
 
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void store_post_increment (Fragment const &fragment, PredicateIterator pred_it)
 Loads a fragment and increments, using predicates. More...
 
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void store (Fragment const &fragment, PredicateIterator pred_it) const
 Loads a fragment with predicates. More...
 
CUTLASS_DEVICE ZipTileIteratorincrement (int count=1)
 Increments store iterator to next tile. More...
 
CUTLASS_DEVICE ZipTileIteratoroperator++ ()
 Increments to next tile. More...
 
CUTLASS_DEVICE ZipTileIteratoroperator+= (int count)
 
CUTLASS_DEVICE ZipTileIteratoroperator+= (Coord< 3 > const &offset)
 Adds a vector offset to the underlying iterators. More...
 
CUTLASS_DEVICE ZipTileIteratordecrement (int count=1)
 Increments store iterator to previous tile. More...
 
CUTLASS_DEVICE ZipTileIteratoroperator-- ()
 Increments to subsequent tile. More...
 
CUTLASS_DEVICE ZipTileIteratoroperator-= (int count)
 Decrements to previous tile. More...
 
CUTLASS_DEVICE void add_pointer_offset (LongIndex offset)
 Adds an offset to both iterators. More...
 

Public Attributes

First first
 First iterator. More...
 
Second second
 Second iterator. More...
 

Member Typedef Documentation

◆ First

template<typename First_ , typename Second_ >
typedef First_ cutlass::ZipTileIterator< First_, Second_ >::First

◆ Fragment

template<typename First_ , typename Second_ >
typedef ZipFragment<typename First::Fragment, typename Second::Fragment> cutlass::ZipTileIterator< First_, Second_ >::Fragment

◆ Index

template<typename First_ , typename Second_ >
typedef platform::Pair<typename First::Index, typename Second::Index> cutlass::ZipTileIterator< First_, Second_ >::Index

◆ LongIndex

template<typename First_ , typename Second_ >
typedef platform::Pair<typename First::LongIndex, typename Second::LongIndex> cutlass::ZipTileIterator< First_, Second_ >::LongIndex

◆ PredicateVector

template<typename First_ , typename Second_ >
typedef First::PredicateVector cutlass::ZipTileIterator< First_, Second_ >::PredicateVector

◆ Second

template<typename First_ , typename Second_ >
typedef Second_ cutlass::ZipTileIterator< First_, Second_ >::Second

◆ TensorRef

template<typename First_ , typename Second_ >
typedef ZipTensorRef< typename First::TensorRef, typename Second::TensorRef> cutlass::ZipTileIterator< First_, Second_ >::TensorRef

Constructor & Destructor Documentation

◆ ZipTileIterator() [1/5]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE cutlass::ZipTileIterator< First_, Second_ >::ZipTileIterator ( )
inline

◆ ZipTileIterator() [2/5]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE cutlass::ZipTileIterator< First_, Second_ >::ZipTileIterator ( Params const &  _params,
Coord< 3 > const &  threadblock_offset = make_Coord(0, 0, 0) 
)
inline

◆ ZipTileIterator() [3/5]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE cutlass::ZipTileIterator< First_, Second_ >::ZipTileIterator ( First const &  _first,
Second const &  _second 
)
inline

◆ ZipTileIterator() [4/5]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE cutlass::ZipTileIterator< First_, Second_ >::ZipTileIterator ( TensorRef const &  ref)
inline

◆ ZipTileIterator() [5/5]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE cutlass::ZipTileIterator< First_, Second_ >::ZipTileIterator ( Params const &  _params,
TensorRef const &  ref 
)
inline

Member Function Documentation

◆ add_pointer_offset()

template<typename First_ , typename Second_ >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::add_pointer_offset ( LongIndex  offset)
inline

◆ decrement()

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::decrement ( int  count = 1)
inline

◆ increment()

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::increment ( int  count = 1)
inline

◆ initialize_predicates() [1/2]

template<typename First_ , typename Second_ >
template<typename PredicateIterator >
CUTLASS_HOST_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::initialize_predicates ( PredicateIterator  predicate_it,
Coord< 3 > const &  bounds,
Coord< 3 > const &  block_offset = make_Coord(0,                                                                                           0,                                                                                           0) 
)
inline

◆ initialize_predicates() [2/2]

template<typename First_ , typename Second_ >
template<typename PredicateIterator , typename PredicateFunctor >
CUTLASS_HOST_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::initialize_predicates ( PredicateIterator  predicate_it,
PredicateFunctor const &  functor,
Coord< 3 > const &  block_offset 
)
inline

◆ load() [1/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::load ( Fragment fragment) const
inline

◆ load() [2/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::load ( Fragment fragment,
Coord< 4 > const &  offset 
) const
inline

◆ load() [3/3]

template<typename First_ , typename Second_ >
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::load ( Fragment fragment,
PredicateIterator  pred_it 
) const
inline

◆ load_post_increment() [1/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::load_post_increment ( Fragment fragment)
inline

◆ load_post_increment() [2/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::load_post_increment ( Fragment fragment,
Coord< 4 > const &  offset 
)
inline

◆ load_post_increment() [3/3]

template<typename First_ , typename Second_ >
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::load_post_increment ( Fragment fragment,
PredicateIterator  pred_it 
)
inline

◆ operator++()

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::operator++ ( )
inline

◆ operator+=() [1/2]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::operator+= ( int  count)
inline

◆ operator+=() [2/2]

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::operator+= ( Coord< 3 > const &  offset)
inline

◆ operator--()

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::operator-- ( )
inline

◆ operator-=()

template<typename First_ , typename Second_ >
CUTLASS_DEVICE ZipTileIterator& cutlass::ZipTileIterator< First_, Second_ >::operator-= ( int  count)
inline

◆ store() [1/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::store ( Fragment const &  fragment) const
inline

◆ store() [2/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::store ( Fragment const &  fragment,
Coord< 4 > const &  offset 
) const
inline

◆ store() [3/3]

template<typename First_ , typename Second_ >
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::store ( Fragment const &  fragment,
PredicateIterator  pred_it 
) const
inline

◆ store_post_increment() [1/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::store_post_increment ( Fragment const &  fragment)
inline

◆ store_post_increment() [2/3]

template<typename First_ , typename Second_ >
template<typename Fragment >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::store_post_increment ( Fragment const &  fragment,
Coord< 4 > const &  offset 
)
inline

◆ store_post_increment() [3/3]

template<typename First_ , typename Second_ >
template<typename Fragment , typename PredicateIterator >
CUTLASS_DEVICE void cutlass::ZipTileIterator< First_, Second_ >::store_post_increment ( Fragment const &  fragment,
PredicateIterator  pred_it 
)
inline

Member Data Documentation

◆ first

template<typename First_ , typename Second_ >
First cutlass::ZipTileIterator< First_, Second_ >::first

◆ second

template<typename First_ , typename Second_ >
Second cutlass::ZipTileIterator< First_, Second_ >::second

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