19 extern unsigned long long flops;
20 extern unsigned long long bytes;
26 if (&dst == &src)
return;
33 errorQuda(
"Cannot call copy with fields with different locations");
89 return make_double3(a3.x, -a3.y, a3.z);
122 void axpy(
const double *a, std::vector<ColorSpinorField *> &x, std::vector<ColorSpinorField *> &y);
146 void axpy_U(
const double *a, std::vector<ColorSpinorField *> &x, std::vector<ColorSpinorField *> &y);
172 void axpy_L(
const double *a, std::vector<ColorSpinorField *> &x, std::vector<ColorSpinorField *> &y);
199 void caxpy(
const Complex *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y);
225 void caxpy_U(
const Complex *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y);
251 void caxpy_L(
const Complex *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y);
280 void caxpyz(
const Complex *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y, std::vector<ColorSpinorField*> &z);
308 void caxpyz_U(
const Complex *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y, std::vector<ColorSpinorField*> &z);
336 void caxpyz_L(
const Complex *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y, std::vector<ColorSpinorField*> &z);
369 void axpyBzpcx(
const double *a, std::vector<ColorSpinorField*> &x, std::vector<ColorSpinorField*> &y,
395 void reDotProduct(
double* result, std::vector<ColorSpinorField*>& a, std::vector<ColorSpinorField*>& b);
404 void cDotProduct(
Complex* result, std::vector<ColorSpinorField*>& a, std::vector<ColorSpinorField*>& b);
416 void hDotProduct(
Complex* result, std::vector<ColorSpinorField*>& a, std::vector<ColorSpinorField*>& b);
441 void cDotProductCopy(
Complex* result, std::vector<ColorSpinorField*>& a, std::vector<ColorSpinorField*>& b, std::vector<ColorSpinorField*>& c);
QudaFieldLocation Location() const
@ QUDA_CUDA_FIELD_LOCATION
@ QUDA_CPU_FIELD_LOCATION
double axpbyzNorm(double a, ColorSpinorField &x, double b, ColorSpinorField &y, ColorSpinorField &z)
double axpyReDot(double a, ColorSpinorField &x, ColorSpinorField &y)
double4 quadrupleCGReduction(ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
Complex axpyCGNorm(double a, ColorSpinorField &x, ColorSpinorField &y)
Complex caxpyDotzy(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
void setParam(int kernel, int prec, int threads, int blocks)
double quadrupleCG3UpdateNorm(double a, double b, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &v)
void caxpbypzYmbw(const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &, ColorSpinorField &)
void axpyZpbx(double a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, double b)
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.
double norm1(const ColorSpinorField &b)
void xpayz(ColorSpinorField &x, double a, ColorSpinorField &y, ColorSpinorField &z)
void cabxpyAx(double a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
void caxpby(const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y)
double3 HeavyQuarkResidualNorm(ColorSpinorField &x, ColorSpinorField &r)
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,...
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.
double xmyNorm(ColorSpinorField &x, ColorSpinorField &y)
double3 tripleCGReduction(ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
void caxpyBzpx(const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
double caxpyXmazNormX(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
void axpbyz(double a, ColorSpinorField &x, double b, ColorSpinorField &y, ColorSpinorField &z)
double3 caxpbypzYmbwcDotProductUYNormY(const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &u)
void caxpbypczw(const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z, ColorSpinorField &w)
void axpyBzpcx(double a, ColorSpinorField &x, ColorSpinorField &y, double b, ColorSpinorField &z, double c)
void xpay(ColorSpinorField &x, double a, ColorSpinorField &y)
void caxpyBxpz(const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
double cabxpyzAxNorm(double a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
double quadrupleCG3InitNorm(double a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &v)
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....
double3 xpyHeavyQuarkResidualNorm(ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &r)
void caxpyXmaz(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
void ax(double a, ColorSpinorField &x)
void caxpyXmazMR(const double &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
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.
double caxpyNorm(const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
void zero(ColorSpinorField &a)
double norm2(const ColorSpinorField &a)
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.
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.
void tripleCGUpdate(double alpha, double beta, ColorSpinorField &q, ColorSpinorField &r, ColorSpinorField &x, ColorSpinorField &p)
double reDotProduct(ColorSpinorField &x, ColorSpinorField &y)
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.
double axpyNorm(double a, ColorSpinorField &x, ColorSpinorField &y)
void axpy(double a, ColorSpinorField &x, ColorSpinorField &y)
double3 cDotProductNormA(ColorSpinorField &a, ColorSpinorField &b)
double3 cDotProductNormB(ColorSpinorField &a, ColorSpinorField &b)
Return (a,b) and ||b||^2 - implemented using cDotProductNormA.
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....
void caxpy(const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
void cxpaypbz(ColorSpinorField &, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z)
void xpy(ColorSpinorField &x, ColorSpinorField &y)
void mxpy(ColorSpinorField &x, ColorSpinorField &y)
void copy(ColorSpinorField &dst, const ColorSpinorField &src)
Complex cDotProduct(ColorSpinorField &, ColorSpinorField &)
void axpby(double a, ColorSpinorField &x, double b, ColorSpinorField &y)
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.
std::complex< double > Complex