41 template <
typename First_,
typename Second_>
64 Params(
typename First::Params
const &_first,
typename Second::Params
const &_second)
75 typedef typename First::Index
Index;
79 typename First::TensorRef,
125 typename PredicateIterator>
131 first.initialize_predicates(predicate_it, bounds, block_offset);
137 typename PredicateIterator,
139 typename PredicateFunctor>
141 PredicateFunctor
const &functor,
143 first.initialize_predicates(predicate_it, functor, block_offset);
151 template <
typename Fragment>
158 template <
typename Fragment>
161 first.load_post_increment(fragment.
first, offset);
166 template <
typename Fragment>
173 template <
typename Fragment>
181 template <
typename Fragment>
188 template <
typename Fragment>
191 first.store_post_increment(fragment.
first, offset);
196 template <
typename Fragment>
203 template <
typename Fragment>
215 template <
typename Fragment,
typename PredicateIterator>
217 first.load_post_increment(fragment.
first, pred_it);
222 template <
typename Fragment,
typename PredicateIterator>
223 CUTLASS_DEVICE
void load(
Fragment &fragment, PredicateIterator pred_it)
const {
229 template <
typename Fragment,
typename PredicateIterator>
231 first.store_post_increment(fragment.
first, pred_it);
236 template <
typename Fragment,
typename PredicateIterator>
237 CUTLASS_DEVICE
void store(
Fragment const &fragment, PredicateIterator pred_it)
const {
248 first.increment(count);
267 first.decrement(count);
280 first.add_pointer_offset(offset);
281 second.add_pointer_offset(offset);
ZipFragment< typename First::Fragment, typename Second::Fragment > Fragment
Fragment type.
Definition: zip_tile_iterator.h:69
Second::Params second
Parameters of second iterator.
Definition: zip_tile_iterator.h:56
First_ First
First iterator type.
Definition: zip_tile_iterator.h:45
Definition: zip_tensor_ref.h:38
First::Index Index
Index type.
Definition: zip_tile_iterator.h:75
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:102
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:189
CUTLASS_DEVICE void load_post_increment(Fragment &fragment, Coord< 4 > const &offset)
Loads a fragment and increments without predicates.
Definition: zip_tile_iterator.h:159
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:197
CUTLASS_HOST_DEVICE Coord< 1 > make_Coord(int _0)
Helper to make a 2-element coordinate.
Definition: coord.h:318
CUTLASS_HOST_DEVICE Params(typename First::Params const &_first, typename Second::Params const &_second)
Constructs a parameters object.
Definition: zip_tile_iterator.h:64
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:126
CUTLASS_HOST_DEVICE Params()
Constructs a parameters object.
Definition: zip_tile_iterator.h:60
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:259
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:140
First::Params first
Parameters of first iterator.
Definition: zip_tile_iterator.h:53
CUTLASS_DEVICE void load_post_increment(Fragment &fragment)
Loads a fragment and increments without predicates.
Definition: zip_tile_iterator.h:152
CUTLASS_DEVICE ZipTileIterator(Params const &_params, TensorRef const &ref)
Constructs a zip iterator from iterator instances.
Definition: zip_tile_iterator.h:115
CUTLASS_DEVICE ZipTileIterator & operator+=(int count)
Definition: zip_tile_iterator.h:256
CUTLASS_DEVICE void store(Fragment const &fragment, PredicateIterator pred_it) const
Loads a fragment with predicates.
Definition: zip_tile_iterator.h:237
ZipTensorRef< typename First::TensorRef, typename Second::TensorRef > TensorRef
Tensor reference.
Definition: zip_tile_iterator.h:80
CUTLASS_DEVICE ZipTileIterator & operator-=(int count)
Decrements to previous tile.
Definition: zip_tile_iterator.h:276
CUTLASS_DEVICE void store_post_increment(Fragment const &fragment)
Stores a fragment and increments without predicates.
Definition: zip_tile_iterator.h:182
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:216
Defines a structure containing a pair of TensorRef-like objects.
Second_ Second
Second iterator type.
Definition: zip_tile_iterator.h:48
CUTLASS_DEVICE ZipTileIterator(First const &_first, Second const &_second)
Constructs a zip iterator from iterator instances.
Definition: zip_tile_iterator.h:107
CUTLASS_DEVICE ZipTileIterator & operator++()
Increments to next tile.
Definition: zip_tile_iterator.h:254
Constructs an iterator from a pair of iterators.
Definition: zip_tile_iterator.h:42
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:98
First first
First iterator.
Definition: zip_tile_iterator.h:87
Params object.
Definition: zip_tile_iterator.h:51
Second second
Second iterator.
Definition: zip_tile_iterator.h:90
CUTLASS_DEVICE void store(Fragment const &fragment, Coord< 4 > const &offset) const
Stores a fragment without predicates.
Definition: zip_tile_iterator.h:204
CUTLASS_DEVICE void load(Fragment &fragment) const
Loads a fragment without predicates.
Definition: zip_tile_iterator.h:167
First::PredicateVector PredicateVector
Predicate vector.
Definition: zip_tile_iterator.h:72
CUTLASS_DEVICE void load(Fragment &fragment, PredicateIterator pred_it) const
Loads a fragment with predicates.
Definition: zip_tile_iterator.h:223
CUTLASS_DEVICE ZipTileIterator & decrement(int count=1)
Increments store iterator to previous tile.
Definition: zip_tile_iterator.h:266
CUTLASS_DEVICE void add_pointer_offset(Index offset)
Adds an offset to both iterators.
Definition: zip_tile_iterator.h:279
CUTLASS_DEVICE ZipTileIterator & operator--()
Increments to subsequent tile.
Definition: zip_tile_iterator.h:273
CUTLASS_DEVICE ZipTileIterator(TensorRef const &ref)
Constructs a zip iterator from iterator instances.
Definition: zip_tile_iterator.h:111
CUTLASS_DEVICE ZipTileIterator & increment(int count=1)
Increments store iterator to next tile.
Definition: zip_tile_iterator.h:247
CUTLASS_DEVICE void store_post_increment(Fragment const &fragment, PredicateIterator pred_it)
Loads a fragment and increments, using predicates.
Definition: zip_tile_iterator.h:230
CUTLASS_DEVICE void load(Fragment &fragment, Coord< 4 > const &offset) const
Loads a fragment without predicates.
Definition: zip_tile_iterator.h:174