QUDA  v1.1.0
A library for QCD on GPUs
Functions | Variables
quda::blas Namespace Reference

Functions

void init ()
 
void destroy ()
 
void setParam (int kernel, int prec, int threads, int blocks)
 
void zero (ColorSpinorField &a)
 
void copy (ColorSpinorField &dst, const ColorSpinorField &src)
 
void ax (double a, ColorSpinorField &x)
 
void axpbyz (double a, ColorSpinorField &x, double b, ColorSpinorField &y, ColorSpinorField &z)
 
void xpy (ColorSpinorField &x, ColorSpinorField &y)
 
void mxpy (ColorSpinorField &x, ColorSpinorField &y)
 
void axpy (double a, ColorSpinorField &x, ColorSpinorField &y)
 
void axpby (double a, ColorSpinorField &x, double b, ColorSpinorField &y)
 
void xpay (ColorSpinorField &x, double a, ColorSpinorField &y)
 
void xpayz (ColorSpinorField &x, double a, ColorSpinorField &y, ColorSpinorField &z)
 
void axpyZpbx (double a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, double b)
 
void axpyBzpcx (double a, ColorSpinorField &x, ColorSpinorField &y, double b, ColorSpinorField &z, double c)
 
void caxpby (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y)
 
void caxpy (const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
 
void caxpbypczw (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z, ColorSpinorField &w)
 
void cxpaypbz (ColorSpinorField &, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z)
 
void caxpbypzYmbw (const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &, ColorSpinorField &)
 
void caxpyBzpx (const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
 
void caxpyBxpz (const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
 
void cabxpyAx (double a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
 
void caxpyXmaz (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
void caxpyXmazMR (const double &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
void tripleCGUpdate (double alpha, double beta, ColorSpinorField &q, ColorSpinorField &r, ColorSpinorField &x, ColorSpinorField &p)
 
double norm1 (const ColorSpinorField &b)
 
double norm2 (const ColorSpinorField &a)
 
double axpyReDot (double a, ColorSpinorField &x, ColorSpinorField &y)
 
double reDotProduct (ColorSpinorField &x, ColorSpinorField &y)
 
double axpbyzNorm (double a, ColorSpinorField &x, double b, ColorSpinorField &y, ColorSpinorField &z)
 
double axpyNorm (double a, ColorSpinorField &x, ColorSpinorField &y)
 
double xmyNorm (ColorSpinorField &x, ColorSpinorField &y)
 
Complex cDotProduct (ColorSpinorField &, ColorSpinorField &)
 
double3 cDotProductNormA (ColorSpinorField &a, ColorSpinorField &b)
 
double3 cDotProductNormB (ColorSpinorField &a, ColorSpinorField &b)
 Return (a,b) and ||b||^2 - implemented using cDotProductNormA. More...
 
double3 caxpbypzYmbwcDotProductUYNormY (const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &u)
 
double caxpyNorm (const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
 
double caxpyXmazNormX (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double cabxpyzAxNorm (double a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
Complex caxpyDotzy (const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
Complex axpyCGNorm (double a, ColorSpinorField &x, ColorSpinorField &y)
 
double3 HeavyQuarkResidualNorm (ColorSpinorField &x, ColorSpinorField &r)
 
double3 xpyHeavyQuarkResidualNorm (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &r)
 
double3 tripleCGReduction (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double4 quadrupleCGReduction (ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
 
double quadrupleCG3InitNorm (double a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &v)
 
double quadrupleCG3UpdateNorm (double a, double b, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &v)
 
void 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 reDotProduct (double *result, std::vector< ColorSpinorField * > &a, std::vector< ColorSpinorField * > &b)
 
void 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 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 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 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 flops
 
unsigned long long bytes
 

Function Documentation

◆ ax()

void quda::blas::ax ( double  a,
ColorSpinorField x 
)

◆ axpby()

void quda::blas::axpby ( double  a,
ColorSpinorField x,
double  b,
ColorSpinorField y 
)
inline

Definition at line 44 of file blas_quda.h.

◆ axpbyz()

void quda::blas::axpbyz ( double  a,
ColorSpinorField x,
double  b,
ColorSpinorField y,
ColorSpinorField z 
)

◆ axpbyzNorm()

double quda::blas::axpbyzNorm ( double  a,
ColorSpinorField x,
double  b,
ColorSpinorField y,
ColorSpinorField z 
)

◆ axpy() [1/3]

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.

Parameters
a[in]Matrix of real coefficients
x[in]Input matrix
y[in,out]Computed output matrix

◆ axpy() [2/3]

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.

Parameters
a[in]Matrix of real coefficients
x[in]vector of input ColorSpinorFields
y[in,out]vector of input/output ColorSpinorFields

◆ axpy() [3/3]

void quda::blas::axpy ( double  a,
ColorSpinorField x,
ColorSpinorField y 
)
inline

Definition at line 43 of file blas_quda.h.

◆ axpy_L() [1/2]

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.

y = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in,out]Computed output matrix

◆ axpy_L() [2/2]

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.

y = x * a + y

Where 'a' must be a square, lower triangular matrix.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in,out]vector of input/output ColorSpinorFields

◆ axpy_U() [1/2]

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.

y = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in,out]Computed output matrix

◆ axpy_U() [2/2]

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.

y = x * a + y

Where 'a' must be a square, upper triangular matrix.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in,out]vector of input/output ColorSpinorFields

◆ axpyBzpcx() [1/2]

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.

y = a * x + y x = b * z + c * x

The dimensions of a, b, c are the same as the size of x and y, with a maximum size of 16.

Parameters
a[in]Array of coefficients
b[in]Array of coefficients
c[in]Array of coefficients
x[in,out]vector of ColorSpinorFields
y[in,out]vector of ColorSpinorFields
z[in]input ColorSpinorField

◆ axpyBzpcx() [2/2]

void quda::blas::axpyBzpcx ( double  a,
ColorSpinorField x,
ColorSpinorField y,
double  b,
ColorSpinorField z,
double  c 
)

◆ axpyCGNorm()

Complex quda::blas::axpyCGNorm ( double  a,
ColorSpinorField x,
ColorSpinorField y 
)

◆ axpyNorm()

double quda::blas::axpyNorm ( double  a,
ColorSpinorField x,
ColorSpinorField y 
)
inline

Definition at line 78 of file blas_quda.h.

◆ axpyReDot()

double quda::blas::axpyReDot ( double  a,
ColorSpinorField x,
ColorSpinorField y 
)

◆ axpyZpbx()

void quda::blas::axpyZpbx ( double  a,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z,
double  b 
)

◆ cabxpyAx()

void quda::blas::cabxpyAx ( double  a,
const Complex b,
ColorSpinorField x,
ColorSpinorField y 
)

◆ cabxpyzAxNorm()

double quda::blas::cabxpyzAxNorm ( double  a,
const Complex b,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ caxpby()

void quda::blas::caxpby ( const Complex a,
ColorSpinorField x,
const Complex b,
ColorSpinorField y 
)

◆ caxpbypczw()

void quda::blas::caxpbypczw ( const Complex a,
ColorSpinorField x,
const Complex b,
ColorSpinorField y,
const Complex c,
ColorSpinorField z,
ColorSpinorField w 
)

◆ caxpbypzYmbw()

void quda::blas::caxpbypzYmbw ( const Complex ,
ColorSpinorField ,
const Complex ,
ColorSpinorField ,
ColorSpinorField ,
ColorSpinorField  
)

◆ caxpbypzYmbwcDotProductUYNormY()

double3 quda::blas::caxpbypzYmbwcDotProductUYNormY ( const Complex a,
ColorSpinorField x,
const Complex b,
ColorSpinorField y,
ColorSpinorField z,
ColorSpinorField w,
ColorSpinorField u 
)

◆ caxpy() [1/3]

void quda::blas::caxpy ( const Complex a,
ColorSpinorField x,
ColorSpinorField y 
)

◆ caxpy() [2/3]

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.

y = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in,out]Computed output matrix

◆ caxpy() [3/3]

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.

y = x * a + y

The dimensions of a can be rectangular, e.g., the width of x and y need not be same.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in,out]vector of input/output ColorSpinorFields

◆ caxpy_L() [1/2]

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.

y = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in,out]Computed output matrix

◆ caxpy_L() [2/2]

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.

y = x * a + y

Where 'a' must be a square, lower triangular matrix.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in,out]vector of input/output ColorSpinorFields

◆ caxpy_U() [1/2]

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.

y = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in,out]Computed output matrix

◆ caxpy_U() [2/2]

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.

y = x * a + y

Where 'a' must be a square, upper triangular matrix.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in,out]vector of input/output ColorSpinorFields

◆ caxpyBxpz() [1/2]

void quda::blas::caxpyBxpz ( const Complex ,
ColorSpinorField ,
ColorSpinorField ,
const Complex ,
ColorSpinorField  
)

◆ caxpyBxpz() [2/2]

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.

y = a * x + y z = b * x + z

The dimensions of a, b are the same as the size of x, with a maximum size of 16.

Parameters
a[in]Array of coefficients
b[in]Array of coefficients
x[in]vector of ColorSpinorFields
y[in,out]input ColorSpinorField
z[in,out]input ColorSpinorField

◆ caxpyBzpx()

void quda::blas::caxpyBzpx ( const Complex ,
ColorSpinorField ,
ColorSpinorField ,
const Complex ,
ColorSpinorField  
)

◆ caxpyDotzy()

Complex quda::blas::caxpyDotzy ( const Complex a,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ caxpyNorm()

double quda::blas::caxpyNorm ( const Complex a,
ColorSpinorField x,
ColorSpinorField y 
)

◆ caxpyXmaz()

void quda::blas::caxpyXmaz ( const Complex a,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ caxpyXmazMR()

void quda::blas::caxpyXmazMR ( const double &  a,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ caxpyXmazNormX()

double quda::blas::caxpyXmazNormX ( const Complex a,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ caxpyz() [1/2]

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.

z = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in]Computed output matrix
z[out]vector of input/output ColorSpinorFields

◆ caxpyz() [2/2]

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.

z = x * a + y

The dimensions of a can be rectangular, e.g., the width of x and y need not be same, though the maximum width for both is 16.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in]vector of input ColorSpinorFields
z[out]vector of output ColorSpinorFields

◆ caxpyz_L() [1/2]

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.

z = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in]Computed output matrix
z[out]vector of input/output ColorSpinorFields

◆ caxpyz_L() [2/2]

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.

z = x * a + y

Where 'a' is assumed to be lower triangular

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in]vector of input ColorSpinorFields
z[out]vector of output ColorSpinorFields

◆ caxpyz_U() [1/2]

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.

z = x * a + y

Parameters
a[in]Matrix of coefficients
x[in]Input matrix
y[in]Computed output matrix
z[out]vector of input/output ColorSpinorFields

◆ caxpyz_U() [2/2]

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.

z = x * a + y

Where 'a' is assumed to be upper triangular.

Parameters
a[in]Matrix of coefficients
x[in]vector of input ColorSpinorFields
y[in]vector of input ColorSpinorFields
z[out]vector of output ColorSpinorFields

◆ cDotProduct() [1/2]

Complex quda::blas::cDotProduct ( ColorSpinorField ,
ColorSpinorField  
)

◆ cDotProduct() [2/2]

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.

Parameters
result[out]Matrix of inner product result[i][j] = (a[j],b[i])
a[in]set of input ColorSpinorFields
b[in]set of input ColorSpinorFields

◆ cDotProductCopy()

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.

Parameters
result[out]Matrix of inner product result[i][j] = (a[j],b[i])
a[in]set of input ColorSpinorFields
b[in]set of input ColorSpinorFields
c[out]set of output ColorSpinorFields

◆ cDotProductNormA()

double3 quda::blas::cDotProductNormA ( ColorSpinorField a,
ColorSpinorField b 
)

◆ cDotProductNormB()

double3 quda::blas::cDotProductNormB ( ColorSpinorField a,
ColorSpinorField b 
)
inline

Return (a,b) and ||b||^2 - implemented using cDotProductNormA.

Definition at line 87 of file blas_quda.h.

◆ copy()

void quda::blas::copy ( ColorSpinorField dst,
const ColorSpinorField src 
)
inline

Definition at line 24 of file blas_quda.h.

◆ cxpaypbz()

void quda::blas::cxpaypbz ( ColorSpinorField ,
const Complex b,
ColorSpinorField y,
const Complex c,
ColorSpinorField z 
)

◆ destroy()

void quda::blas::destroy ( )

◆ hDotProduct()

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().

Parameters
result[out]Matrix of inner product result[i][j] = (a[j],b[i])
a[in]set of input ColorSpinorFields
b[in]set of input ColorSpinorFields

◆ hDotProduct_Anorm()

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().

Parameters
result[out]Matrix of inner product result[i][j] = (a[j],b[i])
a[in]set of input ColorSpinorFields
b[in]set of input ColorSpinorFields

◆ HeavyQuarkResidualNorm()

double3 quda::blas::HeavyQuarkResidualNorm ( ColorSpinorField x,
ColorSpinorField r 
)

◆ init()

void quda::blas::init ( )

◆ mxpy()

void quda::blas::mxpy ( ColorSpinorField x,
ColorSpinorField y 
)
inline

Definition at line 42 of file blas_quda.h.

◆ norm1()

double quda::blas::norm1 ( const ColorSpinorField b)

◆ norm2()

double quda::blas::norm2 ( const ColorSpinorField a)

◆ quadrupleCG3InitNorm()

double quda::blas::quadrupleCG3InitNorm ( double  a,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z,
ColorSpinorField w,
ColorSpinorField v 
)

◆ quadrupleCG3UpdateNorm()

double quda::blas::quadrupleCG3UpdateNorm ( double  a,
double  b,
ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z,
ColorSpinorField w,
ColorSpinorField v 
)

◆ quadrupleCGReduction()

double4 quda::blas::quadrupleCGReduction ( ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ reDotProduct() [1/2]

double quda::blas::reDotProduct ( ColorSpinorField x,
ColorSpinorField y 
)

◆ reDotProduct() [2/2]

void quda::blas::reDotProduct ( double *  result,
std::vector< ColorSpinorField * > &  a,
std::vector< ColorSpinorField * > &  b 
)

◆ setParam()

void quda::blas::setParam ( int  kernel,
int  prec,
int  threads,
int  blocks 
)

◆ tripleCGReduction()

double3 quda::blas::tripleCGReduction ( ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField z 
)

◆ tripleCGUpdate()

void quda::blas::tripleCGUpdate ( double  alpha,
double  beta,
ColorSpinorField q,
ColorSpinorField r,
ColorSpinorField x,
ColorSpinorField p 
)

◆ xmyNorm()

double quda::blas::xmyNorm ( ColorSpinorField x,
ColorSpinorField y 
)
inline

Definition at line 79 of file blas_quda.h.

◆ xpay()

void quda::blas::xpay ( ColorSpinorField x,
double  a,
ColorSpinorField y 
)
inline

Definition at line 45 of file blas_quda.h.

◆ xpayz()

void quda::blas::xpayz ( ColorSpinorField x,
double  a,
ColorSpinorField y,
ColorSpinorField z 
)
inline

Definition at line 46 of file blas_quda.h.

◆ xpy()

void quda::blas::xpy ( ColorSpinorField x,
ColorSpinorField y 
)
inline

Definition at line 41 of file blas_quda.h.

◆ xpyHeavyQuarkResidualNorm()

double3 quda::blas::xpyHeavyQuarkResidualNorm ( ColorSpinorField x,
ColorSpinorField y,
ColorSpinorField r 
)

◆ zero()

void quda::blas::zero ( ColorSpinorField a)

Variable Documentation

◆ bytes

unsigned long long quda::blas::bytes
extern

◆ flops

unsigned long long quda::blas::flops
extern