Cutlass
CUDA Templates for Linear Algebra Subroutines and Solvers
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ > Struct Template Reference

Functor to compute linear combination of fragments.

#include <linear_scaling.h>

Inheritance diagram for cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >:
cutlass::gemm::LinearScalingDevicePtr< Scalar_, FragmentMultiplyAdd_ >

Classes

struct  Params
 The parameters. More...
 

Public Types

typedef Scalar_ Scalar
 
typedef FragmentMultiplyAdd_::ScalarAccum ScalarAccum
 
typedef FragmentMultiplyAdd_ FragmentMultiplyAdd
 

Public Member Functions

CUTLASS_DEVICE LinearScaling ()
 Ctor. More...
 
CUTLASS_DEVICE LinearScaling (Params const &_params)
 Ctor. More...
 
CUTLASS_DEVICE bool source_required () const
 
template<typename FragmentA_ , typename FragmentB_ >
CUTLASS_DEVICE void evaluate (FragmentA_ const &accum, FragmentB_ &output)
 Evaluate the functor. More...
 
template<typename ScalarAccum , typename ScalarOutput , int size>
CUTLASS_DEVICE void evaluate (ScalarAccum const *accum, ScalarOutput *output)
 Evaluate the functor, without using fragment in the API. More...
 
template<typename FragmentA_ , typename FragmentB_ >
CUTLASS_DEVICE void evaluate (FragmentA_ const &accum, FragmentB_ const &old, FragmentB_ &output)
 Evaluate the functor. More...
 
template<typename ScalarAccum , typename ScalarOutput , int size>
CUTLASS_DEVICE void evaluate (ScalarAccum const *accum, ScalarOutput const *old, ScalarOutput *output)
 Evaluate the functor, without using fragment in the API. More...
 

Public Attributes

Params params
 

Member Typedef Documentation

◆ FragmentMultiplyAdd

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
typedef FragmentMultiplyAdd_ cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::FragmentMultiplyAdd

◆ Scalar

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
typedef Scalar_ cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::Scalar

◆ ScalarAccum

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
typedef FragmentMultiplyAdd_::ScalarAccum cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::ScalarAccum

Constructor & Destructor Documentation

◆ LinearScaling() [1/2]

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
CUTLASS_DEVICE cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::LinearScaling ( )
inline

◆ LinearScaling() [2/2]

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
CUTLASS_DEVICE cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::LinearScaling ( Params const &  _params)
inline

Member Function Documentation

◆ evaluate() [1/4]

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
template<typename FragmentA_ , typename FragmentB_ >
CUTLASS_DEVICE void cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::evaluate ( FragmentA_ const &  accum,
FragmentB_ &  output 
)
inline

◆ evaluate() [2/4]

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
template<typename ScalarAccum , typename ScalarOutput , int size>
CUTLASS_DEVICE void cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::evaluate ( ScalarAccum const *  accum,
ScalarOutput *  output 
)
inline

◆ evaluate() [3/4]

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
template<typename FragmentA_ , typename FragmentB_ >
CUTLASS_DEVICE void cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::evaluate ( FragmentA_ const &  accum,
FragmentB_ const &  old,
FragmentB_ &  output 
)
inline

◆ evaluate() [4/4]

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
template<typename ScalarAccum , typename ScalarOutput , int size>
CUTLASS_DEVICE void cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::evaluate ( ScalarAccum const *  accum,
ScalarOutput const *  old,
ScalarOutput *  output 
)
inline

◆ source_required()

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
CUTLASS_DEVICE bool cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::source_required ( ) const
inline

Method to determine whether the source accumulator matrix C is ever needed. This method may always safely return true, though better performance is possible if the source accumulator matrix is never loaded unnecessarily.

Member Data Documentation

◆ params

template<typename Scalar_, typename FragmentMultiplyAdd_ = FragmentMultiplyAdd<Scalar_, Scalar_>>
Params cutlass::gemm::LinearScaling< Scalar_, FragmentMultiplyAdd_ >::params

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