Cutlass
CUDA Templates for Linear Algebra Subroutines and Solvers
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ > Struct Template Reference

Manages a pair of iterators to stream data from global memory to shared.

#include <fragment_stream.h>

Classes

struct  Params
 Parameters passed to initialize the ierator. More...
 

Public Types

typedef Traits_ Traits
 Defines traits of WMMA GEMM tile stream. More...
 
typedef LoadIterator_ LoadIterator
 Defines the load iterator. More...
 
typedef StoreIterator_ StoreIterator
 Defines the store iterator. More...
 
typedef Convert_ Convert
 Converts between tiles. More...
 
typedef Index_ Index
 Index type. More...
 
typedef LoadIterator::Fragment Fragment
 Loaded fragment type. More...
 
typedef StoreIterator::Fragment StoreFragment
 Stored fragment type. More...
 
typedef StoreIterator::Storage Storage
 Destination storage. More...
 
typedef StoreIterator::Storage SharedStoreStorage
 The storage in shared memory. More...
 

Public Member Functions

CUTLASS_DEVICE FragmentStream ()
 
CUTLASS_DEVICE FragmentStream (Params const &params, Coord< 3 > const &bounds, Coord< 3 > const &block_offset=make_Coord(0, 0, 0))
 Constructor. More...
 
CUTLASS_DEVICE void load ()
 Loads the fragment. More...
 
CUTLASS_DEVICE void commit ()
 Commits the fragment. More...
 
CUTLASS_DEVICE void initialize_predicates (Coord< 3 > const &bounds, Coord< 3 > const &block_offset)
 Recomputes predicates. More...
 

Static Public Member Functions

static CUTLASS_DEVICE void shared_store_fence ()
 The memory fence for shared stores. More...
 

Public Attributes

LoadIterator load_iterator
 Loads fragment from global memory. More...
 
LoadIterator::PredicateVector predicates
 Predicate vector. More...
 
StoreIterator store_iterator
 Stores fragment to shared memory. More...
 
Fragment fetch
 Fragment fetched by load iterator. More...
 
Convert convert
 Converts between load fragments and store fragments. More...
 

Member Typedef Documentation

◆ Convert

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef Convert_ cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::Convert

◆ Fragment

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef LoadIterator::Fragment cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::Fragment

◆ Index

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef Index_ cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::Index

◆ LoadIterator

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef LoadIterator_ cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::LoadIterator

◆ SharedStoreStorage

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef StoreIterator::Storage cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::SharedStoreStorage

◆ Storage

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef StoreIterator::Storage cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::Storage

◆ StoreFragment

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef StoreIterator::Fragment cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::StoreFragment

◆ StoreIterator

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef StoreIterator_ cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::StoreIterator

◆ Traits

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
typedef Traits_ cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::Traits

Constructor & Destructor Documentation

◆ FragmentStream() [1/2]

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
CUTLASS_DEVICE cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::FragmentStream ( )
inline

◆ FragmentStream() [2/2]

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
CUTLASS_DEVICE cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::FragmentStream ( Params const &  params,
Coord< 3 > const &  bounds,
Coord< 3 > const &  block_offset = make_Coord(0, 0, 0) 
)
inline

Member Function Documentation

◆ commit()

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
CUTLASS_DEVICE void cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::commit ( )
inline

◆ initialize_predicates()

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
CUTLASS_DEVICE void cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::initialize_predicates ( Coord< 3 > const &  bounds,
Coord< 3 > const &  block_offset 
)
inline

◆ load()

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
CUTLASS_DEVICE void cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::load ( )
inline

◆ shared_store_fence()

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
static CUTLASS_DEVICE void cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::shared_store_fence ( )
inlinestatic

Member Data Documentation

◆ convert

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
Convert cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::convert

◆ fetch

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
Fragment cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::fetch

◆ load_iterator

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
LoadIterator cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::load_iterator

◆ predicates

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
LoadIterator::PredicateVector cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::predicates

◆ store_iterator

template<typename Traits_, typename LoadIterator_, typename StoreIterator_, typename Convert_ = FragmentCopy<typename StoreIterator_::Fragment, typename LoadIterator_::Fragment>, typename Index_ = int>
StoreIterator cutlass::FragmentStream< Traits_, LoadIterator_, StoreIterator_, Convert_, Index_ >::store_iterator

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