QUDA  0.9.0
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN > Struct Template Reference
Inheritance diagram for quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >:
Inheritance graph
[legend]
Collaboration diagram for quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >:
Collaboration graph
[legend]

Public Types

typedef scalar< ReduceType >::type real
 

Public Member Functions

 xpyHeavyQuarkResidualNorm_ (const Float2 &a, const Float2 &b)
 
__device__ __host__ void pre ()
 pre-computation routine called before the "M-loop" More...
 
__device__ __host__ void operator() (ReduceType &sum, FloatN &x, FloatN &y, FloatN &z, FloatN &w, FloatN &v)
 where the reduction is usually computed and any auxiliary operations More...
 
__device__ __host__ void post (ReduceType &sum)
 sum the solution and residual norms, and compute the heavy-quark norm More...
 

Static Public Member Functions

static int streams ()
 
static int flops ()
 total number of input and output streams More...
 

Public Attributes

Float2 a
 
Float2 b
 
ReduceType aux
 

Detailed Description

template<typename ReduceType, typename Float2, typename FloatN>
struct quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >

Variant of the HeavyQuarkResidualNorm kernel: this takes three arguments, the first two are summed together to form the solution, with the third being the residual vector. This removes the need an additional xpy call in the solvers, impriving performance.

Definition at line 719 of file reduce_quda.cu.

Member Typedef Documentation

◆ real

template<typename ReduceType , typename Float2 , typename FloatN >
typedef scalar<ReduceType>::type quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::real

Definition at line 720 of file reduce_quda.cu.

Constructor & Destructor Documentation

◆ xpyHeavyQuarkResidualNorm_()

template<typename ReduceType , typename Float2 , typename FloatN >
quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::xpyHeavyQuarkResidualNorm_ ( const Float2 &  a,
const Float2 &  b 
)
inline

Definition at line 724 of file reduce_quda.cu.

Member Function Documentation

◆ flops()

template<typename ReduceType , typename Float2 , typename FloatN >
static int quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::flops ( )
inlinestatic

total number of input and output streams

Definition at line 739 of file reduce_quda.cu.

◆ operator()()

template<typename ReduceType , typename Float2 , typename FloatN >
__device__ __host__ void quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::operator() ( ReduceType &  sum,
FloatN &  x,
FloatN &  y,
FloatN &  z,
FloatN &  w,
FloatN &  v 
)
inlinevirtual

where the reduction is usually computed and any auxiliary operations

Implements quda::blas::ReduceFunctor< ReduceType, Float2, FloatN >.

Definition at line 728 of file reduce_quda.cu.

References quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::aux, x, y, and z.

◆ post()

template<typename ReduceType , typename Float2 , typename FloatN >
__device__ __host__ void quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::post ( ReduceType &  sum)
inlinevirtual

sum the solution and residual norms, and compute the heavy-quark norm

Reimplemented from quda::blas::ReduceFunctor< ReduceType, Float2, FloatN >.

Definition at line 733 of file reduce_quda.cu.

References quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::aux, and sum().

Here is the call graph for this function:

◆ pre()

template<typename ReduceType , typename Float2 , typename FloatN >
__device__ __host__ void quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::pre ( )
inlinevirtual

pre-computation routine called before the "M-loop"

Reimplemented from quda::blas::ReduceFunctor< ReduceType, Float2, FloatN >.

Definition at line 726 of file reduce_quda.cu.

References quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::aux.

◆ streams()

template<typename ReduceType , typename Float2 , typename FloatN >
static int quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::streams ( )
inlinestatic

Definition at line 738 of file reduce_quda.cu.

Member Data Documentation

◆ a

template<typename ReduceType , typename Float2 , typename FloatN >
Float2 quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::a

Definition at line 721 of file reduce_quda.cu.

◆ aux

template<typename ReduceType , typename Float2 , typename FloatN >
ReduceType quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::aux

◆ b

template<typename ReduceType , typename Float2 , typename FloatN >
Float2 quda::blas::xpyHeavyQuarkResidualNorm_< ReduceType, Float2, FloatN >::b

Definition at line 722 of file reduce_quda.cu.


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