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 ZipTileIterator & | increment (int count=1)
| Increments store iterator to next tile. More...
CUTLASS_DEVICE ZipTileIterator & | operator++ ()
| Increments to next tile. More...
CUTLASS_DEVICE ZipTileIterator & | operator+= (int count)
CUTLASS_DEVICE ZipTileIterator & | operator+= (Coord< 3 > const &offset)
| Adds a vector offset to the underlying iterators. More...
CUTLASS_DEVICE ZipTileIterator & | decrement (int count=1)
| Increments store iterator to previous tile. More...
CUTLASS_DEVICE ZipTileIterator & | operator-- ()
| Increments to subsequent tile. More...
CUTLASS_DEVICE ZipTileIterator & | operator-= (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:

- zip_tile_iterator.h