44 template <
typename Iterator_,
typename Transformer_ = Copy<
typename Iterator_::Fragment> >
69 typedef typename Iterator::Index
Index;
140 template <
typename Iterator_,
typename Transformer_ = Copy<
typename Iterator_::Fragment> >
153 typedef typename Transformer::InputFragment
Fragment;
165 typedef typename Iterator::Index
Index;
247 template <
typename Iterator_,
248 typename PredicateFunctor_ =
249 RegularTilePredicateFunctor<typename Iterator_::Traits::Delta>,
250 typename Transformer_ = Copy<typename Iterator_::Fragment> >
292 :
Base(_params, threadblock_offset) {
293 this->iterator.initialize_predicates(
299 void copy() { this->iterator.load_post_increment(this->fetched_fragment,
predicates.begin()); }
305 template <
typename Iterator_,
306 typename PredicateFunctor_ =
307 RegularTilePredicateFunctor<typename Iterator_::Traits::Delta>,
308 typename Transformer_ = Copy<typename Iterator_::Fragment> >
350 :
Base(_params, threadblock_offset) {
351 this->iterator.initialize_predicates(
358 this->transformer.transform(this->source_fragment, this->transformed_fragment);
359 this->iterator.store_post_increment(this->transformed_fragment,
predicates.begin());
365 this->source_fragment = frag;
Base::TransformedFragment TransformedFragment
Output fragment from transformer.
Definition: tile_stream.h:329
CUTLASS_DEVICE TransformedFragment & fragment()
Accesses the loaded, transformed fragment.
Definition: tile_stream.h:134
CUTLASS_DEVICE void copy(Fragment const &frag)
Stores the fragment and increments the iterator.
Definition: tile_stream.h:364
CUTLASS_DEVICE Fragment & fragment()
Accesses the transformed fragment.
Definition: tile_stream.h:237
CUTLASS_DEVICE void copy()
Loads a tile and increments the iterator.
Definition: tile_stream.h:122
CUTLASS_DEVICE void copy()
Stores the fragment and increments the iterator.
Definition: tile_stream.h:357
Transformer::InputFragment Fragment
Source fragment.
Definition: tile_stream.h:153
Iterator::PredicateVector predicates
Predicates.
Definition: tile_stream.h:281
CUTLASS_DEVICE void copy(Fragment const &frag)
Stores a fragment and increments the iterator.
Definition: tile_stream.h:226
Defines the Tile Traits concept and iterators for loading and storing to tiles efficiently.
Iterator_ Iterator
TileLoadIterator.
Definition: tile_stream.h:317
Iterator::TensorRef TensorRef
Tensor reference expected by the underlying iterator.
Definition: tile_stream.h:159
Iterator_ Iterator
TileLoadIterator.
Definition: tile_stream.h:51
CUTLASS_HOST_DEVICE Coord< 1 > make_Coord(int _0)
Helper to make a 2-element coordinate.
Definition: coord.h:368
Generic stream for transforming and storing fragments.
Definition: tile_stream.h:141
PredicateFunctor_ PredicateFunctor
Predicate functor.
Definition: tile_stream.h:262
Generic stream for loading and transforming fragments.
Definition: tile_stream.h:251
Base::TransformedFragment TransformedFragment
Output fragment from transformer.
Definition: tile_stream.h:271
Base::Fragment Fragment
Fragment fetched from source memory.
Definition: tile_stream.h:326
Empty predicate vector struct.
Definition: tile_stream.h:162
Base::Params Params
Parameters object used to construct generic load stream.
Definition: tile_stream.h:332
Parameters used to construct the stream.
Definition: tile_stream.h:168
CUTLASS_DEVICE void copy()
Loads a tile and increments the iterator.
Definition: tile_stream.h:299
TransformedFragment transformed_fragment
Transformed fragment from transformer.
Definition: tile_stream.h:103
CUTLASS_DEVICE void commit()
Commits the fetched fragment and applies a transformation.
Definition: tile_stream.h:126
Transformer_ Transformer
Transformer.
Definition: tile_stream.h:323
Iterator iterator
Iterator to load tiles.
Definition: tile_stream.h:94
CUTLASS_HOST_DEVICE Params(typename Iterator::Params const &_iterator)
Constructor with iterator params.
Definition: tile_stream.h:182
CUTLASS_DEVICE Fragment & intermediate_fragment()
Accesses the loaded, transformed fragment.
Definition: tile_stream.h:130
Transformer_ Transformer
Transformer.
Definition: tile_stream.h:265
Base::Params Params
Parameters object used to construct generic load stream.
Definition: tile_stream.h:274
Transformer_ Transformer
Transformer.
Definition: tile_stream.h:150
Iterator::Index Index
Index type.
Definition: tile_stream.h:69
Iterator::Params iterator
Parameters to the iterator.
Definition: tile_stream.h:170
Iterator::PredicateVector predicates
Predicates.
Definition: tile_stream.h:339
Transformer transformer
Transformation applied to fragments.
Definition: tile_stream.h:100
CUTLASS_DEVICE PredicatedTileStoreStream(Params const &_params, Coord< 3 > const &bounds, Coord< 3 > const &threadblock_offset=make_Coord(0, 0, 0))
Ctor.
Definition: tile_stream.h:347
Fragment fetched_fragment
Fragment loaded via iterator.
Definition: tile_stream.h:97
Transformer_ Transformer
Transformer.
Definition: tile_stream.h:54
CUTLASS_DEVICE TileStoreStream(Params const &_params, TensorRef const &_ref)
Ctor.
Definition: tile_stream.h:207
CUTLASS_HOST_DEVICE Params()
Default constructor.
Definition: tile_stream.h:82
CUTLASS_DEVICE TileStoreStream(Params const &_params, Coord< 3 > const &threadblock_offset=make_Coord(0, 0, 0))
Ctor.
Definition: tile_stream.h:212
CUTLASS_DEVICE TileLoadStream(Params const &_params, TensorRef const &_ref)
Ctor.
Definition: tile_stream.h:111
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:46
Iterator::TensorRef TensorRef
Tensor reference expected by the stream.
Definition: tile_stream.h:63
CUTLASS_HOST_DEVICE Params()
Default constructor.
Definition: tile_stream.h:178
Transformer transformer
Transformation applied to inputs.
Definition: tile_stream.h:193
Transformer::OutputFragment TransformedFragment
Output fragment from transformer.
Definition: tile_stream.h:60
CUTLASS_DEVICE PredicatedTileLoadStream(Params const &_params, Coord< 3 > const &bounds, Coord< 3 > const &threadblock_offset=make_Coord(0, 0, 0))
Ctor.
Definition: tile_stream.h:289
PredicateFunctor_ PredicateFunctor
Predicate functor.
Definition: tile_stream.h:320
Generic stream for loading and transforming fragments.
Definition: tile_stream.h:45
Empty predicate vector struct.
Definition: tile_stream.h:66
CUTLASS_DEVICE void commit()
Commits the store operation.
Definition: tile_stream.h:233
Iterator::Fragment Fragment
Fragment fetched from source memory.
Definition: tile_stream.h:57
Parameters object used to construct generic load stream.
Definition: tile_stream.h:72
Iterator::Index Index
Index type.
Definition: tile_stream.h:165
Base::Fragment Fragment
Fragment fetched from source memory.
Definition: tile_stream.h:268
CUTLASS_HOST_DEVICE Params(typename Iterator::Params const &_iterator)
Constructor with iterator params.
Definition: tile_stream.h:86
Transformer::OutputFragment TransformedFragment
Transformed fragment, compatible with Iterator::Fragment.
Definition: tile_stream.h:156
Fragment source_fragment
Source fragment.
Definition: tile_stream.h:196
CUTLASS_DEVICE TransformedFragment & intermediate_fragment()
Accesses the fragment after trasnforming.
Definition: tile_stream.h:241
TileStoreStream< Iterator_, Transformer_ > Base
Definition: tile_stream.h:314
CUTLASS_DEVICE TileLoadStream(Params const &_params, Coord< 3 > const &threadblock_offset=make_Coord(0, 0, 0))
Ctor.
Definition: tile_stream.h:116
Iterator_ Iterator
TileLoadIterator.
Definition: tile_stream.h:147
CUTLASS_DEVICE void commit()
Commits the store operation.
Definition: tile_stream.h:371
Generic stream for transforming and storing fragments.
Definition: tile_stream.h:309
TransformedFragment transformed_fragment
Transformed fragment from transformer.
Definition: tile_stream.h:199
Defines conversion operations among Fragments of different base type.
Iterator_ Iterator
TileLoadIterator.
Definition: tile_stream.h:259
TileLoadStream< Iterator_, Transformer_ > Base
Definition: tile_stream.h:256
CUTLASS_DEVICE void copy()
Stores a fragment and increments the iterator.
Definition: tile_stream.h:218
Iterator::Params iterator
Parameters to the iterator.
Definition: tile_stream.h:74
Iterator iterator
Iterator to store tiles.
Definition: tile_stream.h:190