42 template <
typename First_,
typename Second_>
65 Params(
typename First::Params
const &_first,
typename Second::Params
const &_second)
83 typename First::TensorRef,
129 typename PredicateIterator>
135 first.initialize_predicates(predicate_it, bounds, block_offset);
141 typename PredicateIterator,
143 typename PredicateFunctor>
145 PredicateFunctor
const &functor,
147 first.initialize_predicates(predicate_it, functor, block_offset);
155 template <
typename Fragment>
162 template <
typename Fragment>
165 first.load_post_increment(fragment.
first, offset);
170 template <
typename Fragment>
177 template <
typename Fragment>
185 template <
typename Fragment>
192 template <
typename Fragment>
195 first.store_post_increment(fragment.
first, offset);
200 template <
typename Fragment>
207 template <
typename Fragment>
219 template <
typename Fragment,
typename PredicateIterator>
221 first.load_post_increment(fragment.
first, pred_it);
226 template <
typename Fragment,
typename PredicateIterator>
227 CUTLASS_DEVICE
void load(
Fragment &fragment, PredicateIterator pred_it)
const {
233 template <
typename Fragment,
typename PredicateIterator>
235 first.store_post_increment(fragment.
first, pred_it);
240 template <
typename Fragment,
typename PredicateIterator>
241 CUTLASS_DEVICE
void store(
Fragment const &fragment, PredicateIterator pred_it)
const {
252 first.increment(count);
271 first.decrement(count);
ZipFragment< typename First::Fragment, typename Second::Fragment > Fragment
Fragment type.
Definition: zip_tile_iterator.h:70
Second::Params second
Parameters of second iterator.
Definition: zip_tile_iterator.h:57
First_ First
First iterator type.
Definition: zip_tile_iterator.h:46
Definition: zip_tensor_ref.h:38
CUTLASS_DEVICE ZipTileIterator(Params const &_params, Coord< 3 > const &threadblock_offset=make_Coord(0, 0, 0))
Constructs a zip iterator from params.
Definition: zip_tile_iterator.h:106
CUTLASS_DEVICE void store_post_increment(Fragment const &fragment, Coord< 4 > const &offset)
Stores a fragment and increments without predicates.
Definition: zip_tile_iterator.h:193
CUTLASS_DEVICE void load_post_increment(Fragment &fragment, Coord< 4 > const &offset)
Loads a fragment and increments without predicates.
Definition: zip_tile_iterator.h:163
A Coord is a coordinate of arbitrary rank into a tensor or matrix.
CUTLASS_DEVICE void store(Fragment const &fragment) const
Stores a fragment without predicates.
Definition: zip_tile_iterator.h:201
platform::Pair< typename First::Index, typename Second::Index > Index
Index type.
Definition: zip_tile_iterator.h:76
CUTLASS_HOST_DEVICE Coord< 1 > make_Coord(int _0)
Helper to make a 2-element coordinate.
Definition: coord.h:368
CUTLASS_HOST_DEVICE Params(typename First::Params const &_first, typename Second::Params const &_second)
Constructs a parameters object.
Definition: zip_tile_iterator.h:65
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.
Definition: zip_tile_iterator.h:130
CUTLASS_HOST_DEVICE Params()
Constructs a parameters object.
Definition: zip_tile_iterator.h:61
A template defining Fragment Concept.
Definition: zip_fragment.h:46
CUTLASS_DEVICE ZipTileIterator & operator+=(Coord< 3 > const &offset)
Adds a vector offset to the underlying iterators.
Definition: zip_tile_iterator.h:263
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.
Definition: zip_tile_iterator.h:144
First::Params first
Parameters of first iterator.
Definition: zip_tile_iterator.h:54
CUTLASS_DEVICE void load_post_increment(Fragment &fragment)
Loads a fragment and increments without predicates.
Definition: zip_tile_iterator.h:156
CUTLASS_DEVICE ZipTileIterator(Params const &_params, TensorRef const &ref)
Constructs a zip iterator from iterator instances.
Definition: zip_tile_iterator.h:119
CUTLASS_DEVICE ZipTileIterator & operator+=(int count)
Definition: zip_tile_iterator.h:260
CUTLASS_DEVICE void store(Fragment const &fragment, PredicateIterator pred_it) const
Loads a fragment with predicates.
Definition: zip_tile_iterator.h:241
ZipTensorRef< typename First::TensorRef, typename Second::TensorRef > TensorRef
Tensor reference.
Definition: zip_tile_iterator.h:84
CUTLASS_DEVICE ZipTileIterator & operator-=(int count)
Decrements to previous tile.
Definition: zip_tile_iterator.h:280
CUTLASS_DEVICE void store_post_increment(Fragment const &fragment)
Stores a fragment and increments without predicates.
Definition: zip_tile_iterator.h:186
Models a pair of fragments.
First first
First fragment object.
Definition: zip_fragment.h:61
CUTLASS_DEVICE void load_post_increment(Fragment &fragment, PredicateIterator pred_it)
Loads a fragment and increments, using predicates.
Definition: zip_tile_iterator.h:220
Defines a structure containing a pair of TensorRef-like objects.
Second_ Second
Second iterator type.
Definition: zip_tile_iterator.h:49
CUTLASS_DEVICE ZipTileIterator(First const &_first, Second const &_second)
Constructs a zip iterator from iterator instances.
Definition: zip_tile_iterator.h:111
CUTLASS_DEVICE ZipTileIterator & operator++()
Increments to next tile.
Definition: zip_tile_iterator.h:258
Constructs an iterator from a pair of iterators.
Definition: zip_tile_iterator.h:43
Second second
Second fragment object.
Definition: zip_fragment.h:64
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:46
CUTLASS_DEVICE ZipTileIterator()
Default constructor.
Definition: zip_tile_iterator.h:102
First first
First iterator.
Definition: zip_tile_iterator.h:91
Params object.
Definition: zip_tile_iterator.h:52
Second second
Second iterator.
Definition: zip_tile_iterator.h:94
CUTLASS_DEVICE void store(Fragment const &fragment, Coord< 4 > const &offset) const
Stores a fragment without predicates.
Definition: zip_tile_iterator.h:208
platform::Pair< typename First::LongIndex, typename Second::LongIndex > LongIndex
Long index type.
Definition: zip_tile_iterator.h:79
CUTLASS_DEVICE void load(Fragment &fragment) const
Loads a fragment without predicates.
Definition: zip_tile_iterator.h:171
First::PredicateVector PredicateVector
Predicate vector.
Definition: zip_tile_iterator.h:73
CUTLASS_DEVICE void load(Fragment &fragment, PredicateIterator pred_it) const
Loads a fragment with predicates.
Definition: zip_tile_iterator.h:227
CUTLASS_DEVICE ZipTileIterator & decrement(int count=1)
Increments store iterator to previous tile.
Definition: zip_tile_iterator.h:270
CUTLASS_DEVICE ZipTileIterator & operator--()
Increments to subsequent tile.
Definition: zip_tile_iterator.h:277
CUTLASS_DEVICE void add_pointer_offset(LongIndex offset)
Adds an offset to both iterators.
Definition: zip_tile_iterator.h:283
CUTLASS_DEVICE ZipTileIterator(TensorRef const &ref)
Constructs a zip iterator from iterator instances.
Definition: zip_tile_iterator.h:115
CUTLASS_DEVICE ZipTileIterator & increment(int count=1)
Increments store iterator to next tile.
Definition: zip_tile_iterator.h:251
CUTLASS_DEVICE void store_post_increment(Fragment const &fragment, PredicateIterator pred_it)
Loads a fragment and increments, using predicates.
Definition: zip_tile_iterator.h:234
CUTLASS_DEVICE void load(Fragment &fragment, Coord< 4 > const &offset) const
Loads a fragment without predicates.
Definition: zip_tile_iterator.h:178