20 Solver(param, profile), mat(mat),
init(false), allocate_r(false)
28 if (allocate_r)
delete rp;
80 printfQuda(
"MR: %d iterations, r2 = %e, <r|A|r> = (%e, %e), x2 = %e\n",
81 k, Ar3.z, Ar3.x, Ar3.y, x2);
84 while (k < param.maxiter && r2 > 0.0) {
98 printfQuda(
"MR: %d iterations, r2 = %e, <r|A|r> = (%e,%e) x2 = %e\n",
99 k+1, r2, Ar3.x, Ar3.y, x2);
101 printfQuda(
"MR: %d iterations, <r|A|r> = (%e, %e)\n", k, Ar3.x, Ar3.y);
110 printfQuda(
"MR: %d iterations, <r|A|r> = (%e, %e)\n", k, real(Ar2), imag(Ar2));
134 printfQuda(
"MR: Converged after %d iterations, relative residua: iterated = %e, true = %e\n",
QudaVerbosity getVerbosity()
__host__ __device__ ValueType sqrt(ValueType x)
std::complex< double > Complex
MR(DiracMatrix &mat, SolverParam ¶m, TimeProfile &profile)
void operator()(cudaColorSpinorField &out, cudaColorSpinorField &in)
void mat(void *out, void **fatlink, void **longlink, void *in, double kappa, int dagger_bit, QudaPrecision sPrecision, QudaPrecision gPrecision)
QudaInverterType inv_type_precondition
QudaPreserveSource preserve_source
double3 cDotProductNormBCuda(cudaColorSpinorField &a, cudaColorSpinorField &b)
unsigned long long flops() const
cudaColorSpinorField * tmp
void caxpyXmazCuda(const Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y, cudaColorSpinorField &z)
Complex cDotProductCuda(cudaColorSpinorField &, cudaColorSpinorField &)
void copyCuda(cudaColorSpinorField &dst, const cudaColorSpinorField &src)
double normCuda(const cudaColorSpinorField &b)
unsigned long long blas_flops
void Stop(QudaProfileType idx)
double Last(QudaProfileType idx)
void reduceDouble(double &)
void zeroCuda(cudaColorSpinorField &a)
double3 cDotProductNormACuda(cudaColorSpinorField &a, cudaColorSpinorField &b)
void Start(QudaProfileType idx)
void init(int argc, char **argv)
void axCuda(const double &a, cudaColorSpinorField &x)
double norm2(const ColorSpinorField &)
double xmyNormCuda(cudaColorSpinorField &a, cudaColorSpinorField &b)