QUDA  0.9.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer > Class Template Reference
Inheritance diagram for MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >:
Inheritance graph
[legend]
Collaboration diagram for MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >:
Collaboration graph
[legend]

Public Member Functions

 MultiReduceCuda (doubleN result[], SpinorX X[], SpinorY Y[], SpinorZ Z[], SpinorW W[], Reducer &r, int NYW, int length, int nParity, std::vector< ColorSpinorField *> &y, std::vector< ColorSpinorField *> &w)
 
TuneKey tuneKey () const
 
void apply (const cudaStream_t &stream)
 
bool advanceGridDim (TuneParam &param) const
 
void initTuneParam (TuneParam &param) const
 
void defaultTuneParam (TuneParam &param) const
 
void preTune ()
 
void postTune ()
 
long long flops () const
 
long long bytes () const
 
int tuningIter () const
 

Private Member Functions

unsigned int sharedBytesPerThread () const
 
unsigned int sharedBytesPerBlock (const TuneParam &param) const
 
virtual bool advanceSharedBytes (TuneParam &param) const
 
unsigned int maxBlockSize () const
 

Private Attributes

const int NYW
 
MultiReduceArg< NXZ, ReduceType, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer > arg
 
doubleN * result
 
int nParity
 
char * Y_h [MAX_MULTI_BLAS_N]
 
char * W_h [MAX_MULTI_BLAS_N]
 
char * Ynorm_h [MAX_MULTI_BLAS_N]
 
char * Wnorm_h [MAX_MULTI_BLAS_N]
 
std::vector< ColorSpinorField * > & y
 
std::vector< ColorSpinorField * > & w
 

Detailed Description

template<int NXZ, typename doubleN, typename ReduceType, typename FloatN, int M, typename SpinorX, typename SpinorY, typename SpinorZ, typename SpinorW, typename Reducer>
class MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >

Definition at line 241 of file multi_reduce_core.cuh.

Constructor & Destructor Documentation

◆ MultiReduceCuda()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::MultiReduceCuda ( doubleN  result[],
SpinorX  X[],
SpinorY  Y[],
SpinorZ  Z[],
SpinorW  W[],
Reducer &  r,
int  NYW,
int  length,
int  nParity,
std::vector< ColorSpinorField *> &  y,
std::vector< ColorSpinorField *> &  w 
)
inline

Definition at line 271 of file multi_reduce_core.cuh.

Member Function Documentation

◆ advanceGridDim()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
bool MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::advanceGridDim ( TuneParam &  param) const
inline

◆ advanceSharedBytes()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
virtual bool MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::advanceSharedBytes ( TuneParam &  param) const
inlineprivatevirtual

◆ apply()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
void MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::apply ( const cudaStream_t &  stream)
inline

◆ bytes()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
long long MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::bytes ( ) const
inline

◆ defaultTuneParam()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
void MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::defaultTuneParam ( TuneParam &  param) const
inline

◆ flops()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
long long MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::flops ( ) const
inline

◆ initTuneParam()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
void MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::initTuneParam ( TuneParam &  param) const
inline

◆ maxBlockSize()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
unsigned int MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::maxBlockSize ( ) const
inlineprivate

Definition at line 268 of file multi_reduce_core.cuh.

References deviceProp.

◆ postTune()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
void MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::postTune ( )
inline

◆ preTune()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
void MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::preTune ( )
inline

◆ sharedBytesPerBlock()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
unsigned int MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::sharedBytesPerBlock ( const TuneParam &  param) const
inlineprivate

◆ sharedBytesPerThread()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
unsigned int MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::sharedBytesPerThread ( ) const
inlineprivate

◆ tuneKey()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
TuneKey MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::tuneKey ( ) const
inline

◆ tuningIter()

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
int MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::tuningIter ( ) const
inline

Definition at line 355 of file multi_reduce_core.cuh.

Member Data Documentation

◆ arg

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
MultiReduceArg<NXZ,ReduceType,SpinorX,SpinorY,SpinorZ,SpinorW,Reducer> MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::arg
mutableprivate

◆ nParity

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
int MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::nParity
private

◆ NYW

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
const int MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::NYW
private

◆ result

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
doubleN* MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::result
private

◆ w

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
std::vector<ColorSpinorField*> & MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::w
private

◆ W_h

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
char * MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::W_h[MAX_MULTI_BLAS_N]
private

◆ Wnorm_h

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
char * MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::Wnorm_h[MAX_MULTI_BLAS_N]
private

◆ y

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
std::vector<ColorSpinorField*>& MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::y
private

◆ Y_h

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
char* MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::Y_h[MAX_MULTI_BLAS_N]
private

◆ Ynorm_h

template<int NXZ, typename doubleN , typename ReduceType , typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Reducer >
char * MultiReduceCuda< NXZ, doubleN, ReduceType, FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Reducer >::Ynorm_h[MAX_MULTI_BLAS_N]
private

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