13 #define REAL(a) (*((double*)&a)) 14 #define IMAG(a) (*((double*)&a+1)) 28 void setParam(
int kernel,
int prec,
int threads,
int blocks);
30 extern unsigned long long flops;
31 extern unsigned long long bytes;
110 void caxpy(
const Complex *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y);
136 void caxpy_U(
const Complex *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y);
162 void caxpy_L(
const Complex *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y);
191 void caxpyz(
const Complex *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y, std::vector<ColorSpinorField*> &
z);
219 void caxpyz_U(
const Complex *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y, std::vector<ColorSpinorField*> &
z);
247 void caxpyz_L(
const Complex *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y, std::vector<ColorSpinorField*> &
z);
281 void axpyBzpcx(
const double *
a, std::vector<ColorSpinorField*> &
x, std::vector<ColorSpinorField*> &
y,
304 void reDotProduct(
double* result, std::vector<ColorSpinorField*>&
a, std::vector<ColorSpinorField*>&
b);
313 void cDotProduct(
Complex* result, std::vector<ColorSpinorField*>&
a, std::vector<ColorSpinorField*>&
b);
325 void hDotProduct(
Complex* result, std::vector<ColorSpinorField*>&
a, std::vector<ColorSpinorField*>&
b);
350 void cDotProductCopy(
Complex* result, std::vector<ColorSpinorField*>&
a, std::vector<ColorSpinorField*>&
b, std::vector<ColorSpinorField*>&
c);
356 #endif // _QUDA_BLAS_H 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.
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.
void xpay(ColorSpinorField &x, const double &a, ColorSpinorField &y)
void caxpyXmazMR(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
void * getHostReduceBuffer()
double3 cDotProductNormA(ColorSpinorField &a, ColorSpinorField &b)
double caxpyNorm(const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
void setParam(int kernel, int prec, int threads, int blocks)
double norm2(const ColorSpinorField &a)
Complex cDotProduct(ColorSpinorField &, ColorSpinorField &)
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...
std::complex< double > Complex
void xpayz(ColorSpinorField &x, const double &a, ColorSpinorField &y, ColorSpinorField &z)
double3 xpyHeavyQuarkResidualNorm(ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &r)
double axpyNorm(const double &a, ColorSpinorField &x, ColorSpinorField &y)
double reDotProduct(ColorSpinorField &x, ColorSpinorField &y)
void copy(ColorSpinorField &dst, const ColorSpinorField &src)
void ax(const double &a, ColorSpinorField &x)
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 * getMappedHostReduceBuffer()
double xmyNorm(ColorSpinorField &x, ColorSpinorField &y)
void caxpyBzpx(const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
void caxpyBxpz(const Complex &, ColorSpinorField &, ColorSpinorField &, const Complex &, ColorSpinorField &)
void cabxpyAx(const double &a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
double cabxpyAxNorm(const double &a, const Complex &b, ColorSpinorField &x, ColorSpinorField &y)
void axpyZpbx(const double &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z, const double &b)
void caxpbypzYmbw(const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &, ColorSpinorField &)
static __inline__ size_t p
Complex axpyCGNorm(const double &a, ColorSpinorField &x, ColorSpinorField &y)
void tripleCGUpdate(const double &alpha, const double &beta, ColorSpinorField &q, ColorSpinorField &r, ColorSpinorField &x, ColorSpinorField &p)
double4 quadrupleCGReduction(ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
double3 HeavyQuarkResidualNorm(ColorSpinorField &x, ColorSpinorField &r)
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...
double caxpyXmazNormX(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
Complex caxpyDotzy(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
void caxpy(const Complex &a, ColorSpinorField &x, ColorSpinorField &y)
void zero(ColorSpinorField &a)
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 caxpbypczpw(const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &)
void axpy(const double &a, ColorSpinorField &x, ColorSpinorField &y)
void axpby(const double &a, ColorSpinorField &x, const double &b, ColorSpinorField &y)
double3 caxpbypzYmbwcDotProductUYNormY(const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y, ColorSpinorField &z, ColorSpinorField &w, ColorSpinorField &u)
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.
void caxpbypz(const Complex &, ColorSpinorField &, const Complex &, ColorSpinorField &, ColorSpinorField &)
double norm1(const ColorSpinorField &b)
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...
double axpyReDot(const double &a, ColorSpinorField &x, ColorSpinorField &y)
void axpyBzpcx(const double &a, ColorSpinorField &x, ColorSpinorField &y, const double &b, ColorSpinorField &z, const double &c)
void caxpyXmaz(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
Complex xpaycDotzy(ColorSpinorField &x, const double &a, ColorSpinorField &y, ColorSpinorField &z)
void * getDeviceReduceBuffer()
void xpy(ColorSpinorField &x, ColorSpinorField &y)
void caxpby(const Complex &a, ColorSpinorField &x, const Complex &b, ColorSpinorField &y)
void mxpy(ColorSpinorField &x, ColorSpinorField &y)
void cxpaypbz(ColorSpinorField &, const Complex &b, ColorSpinorField &y, const Complex &c, ColorSpinorField &z)
double3 cDotProductNormB(ColorSpinorField &a, ColorSpinorField &b)
double2 reDotProductNormA(ColorSpinorField &a, ColorSpinorField &b)
double3 tripleCGReduction(ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)