Functions
void
setParam (int kernel, int
prec, int threads, int blocks)
Return (a,b) and ||b||^2 - implemented using cDotProductNormA.
More...
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...
This is a wrapper for calling the block "axpy" with a composite
ColorSpinorField. E.g., it computes y = x * a + y.
More...
Compute the block "axpy_U" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "axpy_L" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "caxpy" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "caxpy_U" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "caxpy_L" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "caxpyz" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "caxpyz" with over the set of ColorSpinorFields. E.g., it computes.
More...
Compute the block "caxpyz" with over the set of ColorSpinorFields. E.g., it computes.
More...
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...
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...
Computes the matrix of inner products between the vector set a and the vector set b.
More...
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...
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...
Computes the matrix of inner products between the vector set a and the vector set b, and copies b into c.
More...
Variables
Function Documentation
◆ ax()
void quda::blas::ax
(
double
a,
)
◆ axpby()
void quda::blas::axpby
(
double
a,
double
b,
)
inline
◆ axpbyz()
void quda::blas::axpbyz
(
double
a,
double
b,
)
◆ axpbyzNorm()
double quda::blas::axpbyzNorm
(
double
a,
double
b,
)
◆ axpy() [1/3]
void quda::blas::axpy
(
const double *
a,
)
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,
)
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,
)
inline
◆ axpy_L() [1/2]
void quda::blas::axpy_L
(
const double *
a,
)
This is a wrapper for calling the block "axpy_U" with a composite ColorSpinorField. E.g., it computes.
y = x * a + y
- Parameters
-
x[in] Input matrix
y[in,out] Computed output matrix
◆ axpy_L() [2/2]
void quda::blas::axpy_L
(
const double *
a,
)
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
-
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,
)
This is a wrapper for calling the block "axpy_U" with a composite ColorSpinorField. E.g., it computes.
y = x * a + y
- Parameters
-
x[in] Input matrix
y[in,out] Computed output matrix
◆ axpy_U() [2/2]
void quda::blas::axpy_U
(
const double *
a,
)
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
-
x[in] vector of input ColorSpinorFields
y[in,out] vector of input/output ColorSpinorFields
◆ axpyBzpcx() [1/2]
void quda::blas::axpyBzpcx
(
const double *
a,
const double *
b,
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
◆ axpyBzpcx() [2/2]
void quda::blas::axpyBzpcx
(
double
a,
double
b,
double
c
)
◆ axpyCGNorm()
Complex quda::blas::axpyCGNorm
(
double
a,
)
◆ axpyNorm()
double quda::blas::axpyNorm
(
double
a,
)
inline
◆ axpyReDot()
double quda::blas::axpyReDot
(
double
a,
)
◆ axpyZpbx()
void quda::blas::axpyZpbx
(
double
a,
double
b
)
◆ cabxpyAx()
void quda::blas::cabxpyAx
(
double
a,
)
◆ cabxpyzAxNorm()
double quda::blas::cabxpyzAxNorm
(
double
a,
)
◆ caxpby()
void quda::blas::caxpby
(
const
Complex &
a,
)
◆ caxpbypczw()
void quda::blas::caxpbypczw
(
const
Complex &
a,
)
◆ caxpbypzYmbw()
void quda::blas::caxpbypzYmbw
(
const
Complex &
,
)
◆ caxpbypzYmbwcDotProductUYNormY()
double3 quda::blas::caxpbypzYmbwcDotProductUYNormY
(
const
Complex &
a,
)
◆ caxpy() [1/3]
void quda::blas::caxpy
(
const
Complex &
a,
)
◆ caxpy() [2/3]
void quda::blas::caxpy
(
const
Complex *
a,
)
This is a wrapper for calling the block "caxpy" with a composite ColorSpinorField. E.g., it computes.
y = x * a + y
- Parameters
-
x[in] Input matrix
y[in,out] Computed output matrix
◆ caxpy() [3/3]
void quda::blas::caxpy
(
const
Complex *
a,
)
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
-
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,
)
This is a wrapper for calling the block "caxpy_U" with a composite ColorSpinorField. E.g., it computes.
y = x * a + y
- Parameters
-
x[in] Input matrix
y[in,out] Computed output matrix
◆ caxpy_L() [2/2]
void quda::blas::caxpy_L
(
const
Complex *
a,
)
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
-
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,
)
This is a wrapper for calling the block "caxpy_U" with a composite ColorSpinorField. E.g., it computes.
y = x * a + y
- Parameters
-
x[in] Input matrix
y[in,out] Computed output matrix
◆ caxpy_U() [2/2]
void quda::blas::caxpy_U
(
const
Complex *
a,
)
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
-
x[in] vector of input ColorSpinorFields
y[in,out] vector of input/output ColorSpinorFields
◆ caxpyBxpz() [1/2]
void quda::blas::caxpyBxpz
(
const
Complex &
,
)
◆ caxpyBxpz() [2/2]
void quda::blas::caxpyBxpz
(
const
Complex *
a_,
)
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
◆ caxpyBzpx()
void quda::blas::caxpyBzpx
(
const
Complex &
,
)
◆ caxpyDotzy()
◆ caxpyNorm()
double quda::blas::caxpyNorm
(
const
Complex &
a,
)
◆ caxpyXmaz()
void quda::blas::caxpyXmaz
(
const
Complex &
a,
)
◆ caxpyXmazMR()
void quda::blas::caxpyXmazMR
(
const double &
a,
)
◆ caxpyXmazNormX()
double quda::blas::caxpyXmazNormX
(
const
Complex &
a,
)
◆ caxpyz() [1/2]
void quda::blas::caxpyz
(
const
Complex *
a,
)
This is a wrapper for calling the block "caxpyz" with a composite ColorSpinorField. E.g., it computes.
z = x * a + y
- Parameters
-
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,
)
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
-
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,
)
This is a wrapper for calling the block "caxpyz" with a composite ColorSpinorField. E.g., it computes.
z = x * a + y
- Parameters
-
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,
)
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
-
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,
)
This is a wrapper for calling the block "caxpyz" with a composite ColorSpinorField. E.g., it computes.
z = x * a + y
- Parameters
-
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,
)
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
-
x[in] vector of input ColorSpinorFields
y[in] vector of input ColorSpinorFields
z[out] vector of output ColorSpinorFields
◆ cDotProduct() [1/2]
◆ cDotProduct() [2/2]
void quda::blas::cDotProduct
(
Complex *
result,
)
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,
)
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()
◆ cDotProductNormB()
Return (a,b) and ||b||^2 - implemented using cDotProductNormA.
Definition at line 87 of file blas_quda.h.
◆ copy()
◆ cxpaypbz()
◆ destroy()
void quda::blas::destroy
(
)
◆ hDotProduct()
void quda::blas::hDotProduct
(
Complex *
result,
)
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,
)
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()
◆ init()
void quda::blas::init
(
)
◆ mxpy()
◆ norm1()
◆ norm2()
◆ quadrupleCG3InitNorm()
double quda::blas::quadrupleCG3InitNorm
(
double
a,
)
◆ quadrupleCG3UpdateNorm()
double quda::blas::quadrupleCG3UpdateNorm
(
double
a,
double
b,
)
◆ quadrupleCGReduction()
◆ reDotProduct() [1/2]
◆ reDotProduct() [2/2]
void quda::blas::reDotProduct
(
double *
result,
)
◆ setParam()
void quda::blas::setParam
(
int
kernel,
int
prec,
int
threads,
int
blocks
)
◆ tripleCGReduction()
◆ tripleCGUpdate()
void quda::blas::tripleCGUpdate
(
double
alpha,
double
beta,
)
◆ xmyNorm()
◆ xpay()
◆ xpayz()
◆ xpy()
◆ xpyHeavyQuarkResidualNorm()
◆ zero()
Variable Documentation
◆ bytes
unsigned long long quda::blas::bytes
extern
◆ flops
unsigned long long quda::blas::flops
extern