8 static void report(
const char *type) {
60 errorQuda(
"Extended Steepest Descent is multi-gpu only");
116 (*this)(
out.Component(
i),
in.Component(
i));
128 double lowest = (b2 < 1.0) ? b2 : 1.0;
140 const double &hq_tol) {
157 const double &hq_tol) {
168 const double &hq_tol) {
180 const double &b2,
const double &hq2) {
183 printfQuda(
"%s: %d iterations, <r,r> = %e, |r|/|b| = %e, heavy-quark residual = %e\n",
184 name, k, r2,
sqrt(r2/b2), hq2);
186 printfQuda(
"%s: %d iterations, <r,r> = %e, |r|/|b| = %e\n",
187 name, k, r2,
sqrt(r2/b2));
191 if (std::isnan(r2))
errorQuda(
"Solver appears to have diverged");
198 printfQuda(
"%s: Convergence at %d iterations, L2 relative residual: iterated = %e, true = %e, heavy-quark residual = %e\n",
201 printfQuda(
"%s: Convergence at %d iterations, L2 relative residual: iterated = %e, true = %e\n",
206 printfQuda(
"%s: Convergence at %d iterations, L2 relative residual: iterated = %e, heavy-quark residual = %e\n",
209 printfQuda(
"%s: Convergence at %d iterations, L2 relative residual: iterated = %e\n", name, k,
sqrt(r2/b2));
218 for (
int i=0;
i<
n;
i++) {
bool convergence(const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
static double stopping(const double &tol, const double &b2, QudaResidualType residual_type)
enum QudaResidualType_s QudaResidualType
QudaInverterType inv_type
QudaVerbosity getVerbosity()
__host__ __device__ ValueType sqrt(ValueType x)
bool convergenceL2(const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
QudaInverterType inv_type_precondition
bool convergence(const double *r2, const double *r2_tol, int n) const
void PrintSummary(const char *name, int k, const double &r2, const double &b2)
QudaResidualType residual_type
double true_res_hq_offset[QUDA_MAX_MULTI_SHIFT]
static Solver * create(SolverParam ¶m, DiracMatrix &mat, DiracMatrix &matSloppy, DiracMatrix &matPrecon, TimeProfile &profile)
double true_res_offset[QUDA_MAX_MULTI_SHIFT]
QudaPrecision precision_precondition
virtual void solve(ColorSpinorField &out, ColorSpinorField &in)
cpuColorSpinorField * out
static void report(const char *type)
void PrintStats(const char *, int k, const double &r2, const double &b2, const double &hq2)
QudaPrecision precision_sloppy
bool convergenceHQ(const double &r2, const double &hq2, const double &r2_tol, const double &hq_tol)
void mat(void *out, void **link, void *in, int dagger_bit, int mu, QudaPrecision sPrecision, QudaPrecision gPrecision)