QUDA  0.9.0
Classes | Functions
blas_core.cuh File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  BlasArg< SpinorX, SpinorY, SpinorZ, SpinorW, Functor >
 
class  BlasCuda< FloatN, M, SpinorX, SpinorY, SpinorZ, SpinorW, Functor >
 

Functions

template<typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Functor >
__global__ void blasKernel (BlasArg< SpinorX, SpinorY, SpinorZ, SpinorW, Functor > arg)
 
template<typename RegType , typename StoreType , typename yType , int M, template< typename, typename > class Functor, int writeX, int writeY, int writeZ, int writeW>
void blasCuda (const double2 &a, const double2 &b, const double2 &c, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, int length)
 
template<typename Float2 , int writeX, int writeY, int writeZ, int writeW, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Functor >
void genericBlas (SpinorX &X, SpinorY &Y, SpinorZ &Z, SpinorW &W, Functor f)
 
template<typename Float , typename yFloat , int nSpin, int nColor, QudaFieldOrder order, int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, Functor f)
 
template<typename Float , typename yFloat , int nSpin, QudaFieldOrder order, int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, Functor f)
 
template<typename Float , typename yFloat , QudaFieldOrder order, int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, Functor f)
 
template<typename Float , typename yFloat , int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, Functor f)
 

Function Documentation

◆ blasCuda()

template<typename RegType , typename StoreType , typename yType , int M, template< typename, typename > class Functor, int writeX, int writeY, int writeZ, int writeW>
void blasCuda ( const double2 &  a,
const double2 &  b,
const double2 &  c,
ColorSpinorField &  x,
ColorSpinorField &  y,
ColorSpinorField &  z,
ColorSpinorField &  w,
int  length 
)

Definition at line 137 of file blas_core.cuh.

References a, b, quda::blas::blasStream, quda::blas::blasStrings, quda::blas::bytes, c, checkCudaError, checkLength(), f, quda::blas::flops, length, strcat(), strcpy(), w, warningQuda, X, x, y, Z, and z.

Here is the call graph for this function:

◆ blasKernel()

template<typename FloatN , int M, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Functor >
__global__ void blasKernel ( BlasArg< SpinorX, SpinorY, SpinorZ, SpinorW, Functor >  arg)

Generic blas kernel with four loads and up to four stores.

Definition at line 22 of file blas_core.cuh.

References quda::arg(), blockDim, gridDim, fused_exterior_ndeg_tm_dslash_cuda_gen::i, parity, w, x, y, and z.

Here is the call graph for this function:

◆ genericBlas() [1/5]

template<typename Float2 , int writeX, int writeY, int writeZ, int writeW, typename SpinorX , typename SpinorY , typename SpinorZ , typename SpinorW , typename Functor >
void genericBlas ( SpinorX &  X,
SpinorY &  Y,
SpinorZ &  Z,
SpinorW &  W,
Functor  f 
)

Generic blas kernel with four loads and up to four stores.

FIXME - this is hacky due to the lack of std::complex support in CUDA. The functors are defined in terms of FloatN vectors, whereas the operator() accessor returns std::complex<Float>

Definition at line 192 of file blas_core.cuh.

References c, f, quda::make_Complex(), parity, s, X, x, and Z.

Here is the call graph for this function:

◆ genericBlas() [2/5]

template<typename Float , typename yFloat , int nSpin, int nColor, QudaFieldOrder order, int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas ( ColorSpinorField &  x,
ColorSpinorField &  y,
ColorSpinorField &  z,
ColorSpinorField &  w,
Functor  f 
)

Definition at line 215 of file blas_core.cuh.

References f, w, X, x, y, Z, and z.

◆ genericBlas() [3/5]

template<typename Float , typename yFloat , int nSpin, QudaFieldOrder order, int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas ( ColorSpinorField &  x,
ColorSpinorField &  y,
ColorSpinorField &  z,
ColorSpinorField &  w,
Functor  f 
)

Definition at line 225 of file blas_core.cuh.

References errorQuda, f, w, x, y, and z.

◆ genericBlas() [4/5]

template<typename Float , typename yFloat , QudaFieldOrder order, int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas ( ColorSpinorField &  x,
ColorSpinorField &  y,
ColorSpinorField &  z,
ColorSpinorField &  w,
Functor  f 
)

Definition at line 250 of file blas_core.cuh.

References errorQuda, f, w, x, y, and z.

◆ genericBlas() [5/5]

template<typename Float , typename yFloat , int writeX, int writeY, int writeZ, int writeW, typename Functor >
void genericBlas ( ColorSpinorField &  x,
ColorSpinorField &  y,
ColorSpinorField &  z,
ColorSpinorField &  w,
Functor  f 
)

Definition at line 265 of file blas_core.cuh.

References errorQuda, f, QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, w, x, y, and z.