17 Solver(
param, profile),
mat(
mat), matSloppy(matSloppy),
init(false), allocate_r(false), allocate_y(false)
105 printfQuda(
"MR: %d iterations, r2 = %e, <r|A|r> = (%e, %e), x2 = %e\n",
106 k, Ar3.z, Ar3.x, Ar3.y, x2);
108 printfQuda(
"MR: %d iterations, r2 = %e\n", k, r2);
112 while (k < param.maxiter && r2 > 0.0) {
137 printfQuda(
"MR: %d iterations, r2 = %e, <r|A|r> = (%e,%e) x2 = %e\n",
138 k+1, r2, Ar3.x, Ar3.y, x2);
140 printfQuda(
"MR: %d iterations, <r|A|r> = (%e, %e)\n", k, Ar3.x, Ar3.y);
146 double scale = c2 > 0.0 ?
sqrt(c2) : 1.0;
178 printfQuda(
"MR: Converged after %d iterations, relative residual: iterated = %e, true = %e\n",
183 printfQuda(
"MR: Converged after %d iterations, relative residual: iterated = %e\n", k,
sqrt(r2));
bool global_reduction
whether the solver acting as a preconditioner for another solver
void caxpyXmazMR(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
double3 cDotProductNormA(ColorSpinorField &a, ColorSpinorField &b)
MR(DiracMatrix &mat, DiracMatrix &matSloppy, SolverParam ¶m, TimeProfile &profile)
QudaVerbosity getVerbosity()
double norm2(const ColorSpinorField &a)
__host__ __device__ ValueType sqrt(ValueType x)
std::complex< double > Complex
cudaColorSpinorField * tmp
static ColorSpinorField * Create(const ColorSpinorParam ¶m)
void copy(ColorSpinorField &dst, const ColorSpinorField &src)
void ax(const double &a, ColorSpinorField &x)
double xmyNorm(ColorSpinorField &x, ColorSpinorField &y)
QudaPreserveSource preserve_source
double Last(QudaProfileType idx)
const DiracMatrix & matSloppy
bool is_preconditioner
verbosity to use for preconditioner
void zero(ColorSpinorField &a)
void commAsyncReductionSet(bool global_reduce)
void axpy(const double &a, ColorSpinorField &x, ColorSpinorField &y)
void axpby(const double &a, ColorSpinorField &x, const double &b, ColorSpinorField &y)
void operator()(ColorSpinorField &out, ColorSpinorField &in)
void caxpyXmaz(const Complex &a, ColorSpinorField &x, ColorSpinorField &y, ColorSpinorField &z)
unsigned long long flops() const
QudaUseInitGuess use_init_guess
QudaPrecision precision_sloppy
double3 cDotProductNormB(ColorSpinorField &a, ColorSpinorField &b)
void mat(void *out, void **link, void *in, int dagger_bit, int mu, QudaPrecision sPrecision, QudaPrecision gPrecision)
void commGlobalReductionSet(bool global_reduce)