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 | ( |  | ) |
| inline static

## 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:

- fragment_stream.h