QUDA  v1.1.0
A library for QCD on GPUs
Namespaces | Functions | Variables
blas_quda.h File Reference
#include <quda_internal.h>
#include <color_spinor_field.h>

Go to the source code of this file.

Namespaces

 quda
 
 quda::blas
 

Functions

void quda::blas::init ()
 
void quda::blas::destroy ()
 
void quda::blas::setParam (int kernel, int prec, int threads, int blocks)
 
void quda::blas::zero (ColorSpinorField &a)
 
void quda::blas::copy (ColorSpinorField &dst, const ColorSpinorField &src)
 
void quda::blas::ax (double a, ColorSpinorField &x)
 
void quda::blas::axpbyz (double a, ColorSpinorField &x, double b, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::xpy (ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::mxpy (ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::axpy (double a, ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::axpby (double a, ColorSpinorField &x, double b, ColorSpinorField &y)
 
void quda::blas::xpay (ColorSpinorField &x, double a, ColorSpinorField &y)
 
void quda::blas::xpayz (ColorSpinorField &x, double a, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::axpyZpbx (double a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, double b)
 
void quda::blas::axpyBzpcx (double a, ColorSpinorField &x, ColorSpinorField &y, double b, ColorSpinorField &z, 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::caxpbypczw (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z, ColorSpinorField &w)
 
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 &)
 
void quda::blas::cabxpyAx (double a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
 
void quda::blas::caxpyXmaz (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::caxpyXmazMR (const double &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
void quda::blas::tripleCGUpdate (double alpha, double beta, ColorSpinorField &q, ColorSpinorField &r, ColorSpinorField &x, ColorSpinorField &p)
 
double quda::blas::norm1 (const ColorSpinorField &b)
 
double quda::blas::norm2 (const ColorSpinorField &a)
 
double quda::blas::axpyReDot (double a, ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::reDotProduct (ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::axpbyzNorm (double a, ColorSpinorField &x, double b, ColorSpinorField &y, ColorSpinorField &z)
 
double quda::blas::axpyNorm (double a, ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::xmyNorm (ColorSpinorField &x, ColorSpinorField &y)
 
Complex quda::blas::cDotProduct (ColorSpinorField &, ColorSpinorField &)
 
double3 quda::blas::cDotProductNormA (ColorSpinorField &a, ColorSpinorField &b)
 
double3 quda::blas::cDotProductNormB (ColorSpinorField &a, ColorSpinorField &b)
 Return (a,b) and ||b||^2 - implemented using cDotProductNormA. More...
 
double3 quda::blas::caxpbypzYmbwcDotProductUYNormY (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &u)
 
double quda::blas::caxpyNorm (const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
 
double quda::blas::caxpyXmazNormX (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double quda::blas::cabxpyzAxNorm (double a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
Complex quda::blas::caxpyDotzy (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
Complex quda::blas::axpyCGNorm (double a, ColorSpinorField &x, ColorSpinorField &y)
 
double3 quda::blas::HeavyQuarkResidualNorm (ColorSpinorField &x, ColorSpinorField &r)
 
double3 quda::blas::xpyHeavyQuarkResidualNorm (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &r)
 
double3 quda::blas::tripleCGReduction (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double4 quda::blas::quadrupleCGReduction (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double quda::blas::quadrupleCG3InitNorm (double a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &v)
 
double quda::blas::quadrupleCG3UpdateNorm (double a, double b, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &v)
 
void quda::blas::axpy (const double *a, std::vector< ColorSpinorField * > &x, std::vector< ColorSpinorField * > &y)
 Compute the block "axpy" with over the set of ColorSpinorFields. E.g., it computes y = x * a + y The dimensions of a can be rectangular, e.g., the width of x and y need not be same. More...
 
void quda::blas::axpy (const double *a, ColorSpinorField &x, ColorSpinorField &y)
 This is a wrapper for calling the block "axpy" with a composite ColorSpinorField. E.g., it computes y = x * a + y. More...
 
void quda::blas::axpy_U (const double *a, std::vector< ColorSpinorField * > &x, std::vector< ColorSpinorField * > &y)
 Compute the block "axpy_U" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::axpy_U (const double *a, ColorSpinorField &x, ColorSpinorField &y)
 This is a wrapper for calling the block "axpy_U" with a composite ColorSpinorField. E.g., it computes. More...
 
void quda::blas::axpy_L (const double *a, std::vector< ColorSpinorField * > &x, std::vector< ColorSpinorField * > &y)
 Compute the block "axpy_L" with over the set of ColorSpinorFields. E.g., it computes. More...
 
void quda::blas::axpy_L (const double *a, ColorSpinorField &x, ColorSpinorField &y)
 This is a wrapper for calling the block "axpy_U" with a composite ColorSpinorField. E.g., it computes. More...
 
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