QUDA  0.9.0
Namespaces | Macros | Functions | Variables
blas_quda.h File Reference
#include <quda_internal.h>
#include <color_spinor_field.h>
Include dependency graph for blas_quda.h:

Go to the source code of this file.

Namespaces

 quda
 
 quda::blas
 

Macros

#define REAL(a)   (*((double*)&a))
 
#define IMAG(a)   (*((double*)&a+1))
 

Functions

void quda::blas::init ()
 
void quda::blas::end (void)
 
void * quda::blas::getDeviceReduceBuffer ()
 
void * quda::blas::getMappedHostReduceBuffer ()
 
void * quda::blas::getHostReduceBuffer ()
 
void quda::blas::setParam (int kernel, int prec, int threads, int blocks)
 
double quda::blas::norm2 (const ColorSpinorField &a)
 
double quda::blas::norm1 (const ColorSpinorField &b)
 
void quda::blas::zero (ColorSpinorField &a)
 
void quda::blas::copy (ColorSpinorField &dst, const ColorSpinorField &src)
 
double quda::blas::axpyNorm (const double &a, ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::axpyReDot (const double &a, ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::reDotProduct (ColorSpinorField &x, ColorSpinorField &y)
 
double2 quda::blas::reDotProductNormA (ColorSpinorField &a, ColorSpinorField &b)
 
double quda::blas::xmyNorm (ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::axpby (const double &a, ColorSpinorField &x, const double &b, ColorSpinorField &y)
 
void quda::blas::axpy (const double &a, ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::ax (const double &a, ColorSpinorField &x)
 
void quda::blas::xpy (ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::xpay (ColorSpinorField &x, const double &a, ColorSpinorField &y)
 
void quda::blas::xpayz (ColorSpinorField &x, const double &a, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::mxpy (ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::axpyZpbx (const double &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, const double &b)
 
void quda::blas::axpyBzpcx (const double &a, ColorSpinorField &x, ColorSpinorField &y, const double &b, ColorSpinorField &z, const double &c)
 
void quda::blas::caxpby (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y)
 
void quda::blas::caxpy (const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::cxpaypbz (ColorSpinorField &, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z)
 
void quda::blas::caxpbypzYmbw (const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &, ColorSpinorField &)
 
void quda::blas::caxpyBzpx (const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
 
void quda::blas::caxpyBxpz (const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
 
Complex quda::blas::cDotProduct (ColorSpinorField &, ColorSpinorField &)
 
Complex quda::blas::xpaycDotzy (ColorSpinorField &x, const double &a, ColorSpinorField &y, ColorSpinorField &z)
 
double3 quda::blas::cDotProductNormA (ColorSpinorField &a, ColorSpinorField &b)
 
double3 quda::blas::cDotProductNormB (ColorSpinorField &a, ColorSpinorField &b)
 
double3 quda::blas::caxpbypzYmbwcDotProductUYNormY (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &u)
 
void quda::blas::cabxpyAx (const double &a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::caxpyNorm (const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::caxpyXmaz (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::caxpyXmazMR (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double quda::blas::caxpyXmazNormX (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double quda::blas::cabxpyAxNorm (const double &a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::caxpbypz (const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &)
 
void quda::blas::caxpbypczpw (const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &)
 
Complex quda::blas::caxpyDotzy (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
Complex quda::blas::axpyCGNorm (const double &a, ColorSpinorField &x, ColorSpinorField &y)
 
double3 quda::blas::HeavyQuarkResidualNorm (ColorSpinorField &x, ColorSpinorField &r)
 
double3 quda::blas::xpyHeavyQuarkResidualNorm (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &r)
 
void quda::blas::tripleCGUpdate (const double &alpha, const double &beta, ColorSpinorField &q, ColorSpinorField &r, ColorSpinorField &x, ColorSpinorField &p)
 
double3 quda::blas::tripleCGReduction (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double4 quda::blas::quadrupleCGReduction (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::caxpy (const Complex *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y)
 Compute the block "caxpy" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::caxpy (const Complex *a, ColorSpinorField &x, ColorSpinorField &y)
 This is a wrapper for calling the block "caxpy" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::caxpy_U (const Complex *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y)
 Compute the block "caxpy_U" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::caxpy_U (const Complex *a, ColorSpinorField &x, ColorSpinorField &y)
 This is a wrapper for calling the block "caxpy_U" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::caxpy_L (const Complex *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y)
 Compute the block "caxpy_L" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::caxpy_L (const Complex *a, ColorSpinorField &x, ColorSpinorField &y)
 This is a wrapper for calling the block "caxpy_U" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::caxpyz (const Complex *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y, std::vector< ColorSpinorField *> &z)
 Compute the block "caxpyz" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::caxpyz (const Complex *a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 This is a wrapper for calling the block "caxpyz" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::caxpyz_U (const Complex *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y, std::vector< ColorSpinorField *> &z)
 Compute the block "caxpyz" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::caxpyz_U (const Complex *a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 This is a wrapper for calling the block "caxpyz" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::caxpyz_L (const Complex *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y, std::vector< ColorSpinorField *> &z)
 Compute the block "caxpyz" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::caxpyz_L (const Complex *a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 This is a wrapper for calling the block "caxpyz" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::axpyBzpcx (const double *a, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y, const double *b, ColorSpinorField &z, const double *c)
 Compute the vectorized "axpyBzpcx" with over the set of ColorSpinorFields, where the third vector, z, is constant over the batch. E.g., it computes. More...
 
void quda::blas::caxpyBxpz (const Complex *a_, std::vector< ColorSpinorField *> &x_, ColorSpinorField &y_, const Complex *b_, ColorSpinorField &z_)
 Compute the vectorized "caxpyBxpz" over the set of ColorSpinorFields, where the second and third vector, y and z, is constant over the batch. E.g., it computes. More...
 
void quda::blas::reDotProduct (double *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 
void quda::blas::cDotProduct (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 Computes the matrix of inner products between the vector set a and the vector set b. More...
 
void quda::blas::hDotProduct (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 Computes the matrix of inner products between the vector set a and the vector set b. This routine is specifically for the case where the result matrix is guarantted to be Hermitian. Requires a.size()==b.size(). More...
 
void quda::blas::hDotProduct_Anorm (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 Computes the matrix of inner products between the vector set a and the vector set b. This routine is specifically for the case where the result matrix is guarantted to be Hermitian. Uniquely defined for cases like (p, Ap) where the output is Hermitian, but there's an A-norm instead of an L2 norm. Requires a.size()==b.size(). More...
 
void quda::blas::cDotProductCopy (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b, std::vector< ColorSpinorField *> &c)
 Computes the matrix of inner products between the vector set a and the vector set b, and copies b into c. More...
 

Variables

unsigned long long quda::blas::flops
 
unsigned long long quda::blas::bytes
 

Macro Definition Documentation

◆ IMAG

#define IMAG (   a)    (*((double*)&a+1))

◆ REAL

#define REAL (   a)    (*((double*)&a))