17 void **spinorOutMulti =
nullptr;
49 double _Complex *kappa_b = (
double _Complex *)malloc(
Lsdim *
sizeof(
double _Complex));
50 double _Complex *kappa_c = (
double _Complex *)malloc(
Lsdim *
sizeof(
double _Complex));
51 for (
int xs = 0; xs <
Lsdim; xs++) {
81 double _Complex *kappa_b = (
double _Complex *)malloc(
Lsdim *
sizeof(
double _Complex));
82 double _Complex *kappa_c = (
double _Complex *)malloc(
Lsdim *
sizeof(
double _Complex));
83 for (
int xs = 0; xs <
Lsdim; xs++) {
121 double _Complex *kappa_b = (
double _Complex *)malloc(
Lsdim *
sizeof(
double _Complex));
122 double _Complex *kappa_c = (
double _Complex *)malloc(
Lsdim *
sizeof(
double _Complex));
123 for (
int xs = 0; xs <
Lsdim; xs++) {
159 double l2r =
sqrt(nrm2 / src2);
161 printfQuda(
"Residuals: (L2 relative) tol %9.6e, QUDA = %9.6e, host = %9.6e; (heavy-quark) tol %9.6e, QUDA = %9.6e\n",
183 void *out0 = spinorCheck;
184 void *out1 = (
char *)out0 + tm_offset *
cpu_prec;
186 void *tmp0 = spinorTmp;
187 void *tmp1 = (
char *)tmp0 + tm_offset *
cpu_prec;
189 void *in0 = spinorOutMulti[i];
190 void *in1 = (
char *)in0 + tm_offset *
cpu_prec;
220 printfQuda(
"Domain wall not supported for multi-shift\n");
228 double l2r =
sqrt(nrm2 / src2);
230 printfQuda(
"Shift %2d residuals: (L2 relative) tol %9.6e, QUDA = %9.6e, host = %9.6e; (heavy-quark) tol %9.6e, "
246 void *evenOut = spinorCheck;
247 void *oddOut = (
char *)evenOut + tm_offset *
cpu_prec;
250 void *oddIn = (
char *)evenIn + tm_offset *
cpu_prec;
279 void *out0 = spinorCheck;
280 void *out1 = (
char *)out0 + tm_offset *
cpu_prec;
283 void *in1 = (
char *)in0 + tm_offset *
cpu_prec;
318 void *out0 = spinorCheck;
319 void *out1 = (
char *)out0 + tm_offset *
cpu_prec;
321 void *tmp0 = spinorTmp;
322 void *tmp1 = (
char *)tmp0 + tm_offset *
cpu_prec;
325 void *in1 = (
char *)in0 + tm_offset *
cpu_prec;
370 double l2r =
sqrt(nrm2 / src2);
373 "Residuals: (L2 relative) tol %9.6e, QUDA = %9.6e, host = %9.6e; (heavy-quark) tol %9.6e, QUDA = %9.6e\n",
430 double l2r =
sqrt(nrm2 / src2);
433 printfQuda(
"Residuals: (L2 relative) tol %9.6e, QUDA = %9.6e, host = %9.6e; (heavy-quark) tol %9.6e, QUDA = %9.6e, "
437 printfQuda(
"Shift %2d residuals: (L2 relative) tol %9.6e, QUDA = %9.6e, host = %9.6e; (heavy-quark) tol %9.6e, "
438 "QUDA = %9.6e, host = %9.6e\n",
443 printfQuda(
"Shift %2d has empirically failed to converge\n", shift);
const ColorSpinorField & Odd() const
const ColorSpinorField & Even() const
void clover_mat(void *out, void **gauge, void *clover, void *in, double kappa, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param)
void tmc_mat(void *out, void **gauge, void *clover, void *in, double kappa, double mu, QudaTwistFlavorType flavor, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param)
void clover_matpc(void *out, void **gauge, void *clover, void *clover_inv, void *in, double kappa, QudaMatPCType matpc_type, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param)
void tmc_matpc(void *out, void **gauge, void *in, void *clover, void *cInv, double kappa, double mu, QudaTwistFlavorType flavor, QudaMatPCType matpc_type, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param)
QudaTwistFlavorType twist_flavor
QudaSolutionType solution_type
QudaDslashType dslash_type
cudaColorSpinorField * tmp
cpuColorSpinorField * spinorOut
QudaGaugeParam gauge_param
QudaInvertParam inv_param
void dw_mat(void *out, void **gauge, void *in, double kappa, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm)
void dw_4d_matpc(void *out, void **gauge, void *in, double kappa, QudaMatPCType matpc_type, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm)
void mdw_matpc(void *out, void **gauge, void *in, double _Complex *kappa_b, double _Complex *kappa_c, QudaMatPCType matpc_type, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm, double _Complex *b5, double _Complex *c5)
void dw_4d_mat(void *out, void **gauge, void *in, double kappa, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm)
void mdw_mat(void *out, void **gauge, void *in, double _Complex *kappa_b, double _Complex *kappa_c, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm, double _Complex *b5, double _Complex *c5)
void mdw_eofa_matpc(void *out, void **gauge, void *in, QudaMatPCType matpc_type, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm, double m5, double b, double c, double mq1, double mq2, double mq3, int eofa_pm, double eofa_shift)
void dw_matpc(void *out, void **gauge, void *in, double kappa, QudaMatPCType matpc_type, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm)
void mdw_eofa_mat(void *out, void **gauge, void *in, int dagger, QudaPrecision precision, QudaGaugeParam &gauge_param, double mferm, double m5, double b, double c, double mq1, double mq2, double mq3, int eofa_pm, double eofa_shift)
void verifyInversion(void *spinorOut, void *spinorIn, void *spinorCheck, QudaGaugeParam &gauge_param, QudaInvertParam &inv_param, void **gauge, void *clover, void *clover_inv)
void verifyStaggeredInversion(quda::ColorSpinorField *tmp, quda::ColorSpinorField *ref, quda::ColorSpinorField *in, quda::ColorSpinorField *out, double mass, void *qdp_fatlink[], void *qdp_longlink[], void **ghost_fatlink, void **ghost_longlink, QudaGaugeParam &gauge_param, QudaInvertParam &inv_param, int shift)
void verifyDomainWallTypeInversion(void *spinorOut, void **spinorOutMulti, void *spinorIn, void *spinorCheck, QudaGaugeParam &gauge_param, QudaInvertParam &inv_param, void **gauge, void *clover, void *clover_inv)
void verifyWilsonTypeInversion(void *spinorOut, void **spinorOutMulti, void *spinorIn, void *spinorCheck, QudaGaugeParam &gauge_param, QudaInvertParam &inv_param, void **gauge, void *clover, void *clover_inv)
@ QUDA_TWISTED_CLOVER_DSLASH
@ QUDA_CLOVER_WILSON_DSLASH
@ QUDA_TWISTED_MASS_DSLASH
@ QUDA_DOMAIN_WALL_DSLASH
@ QUDA_MOBIUS_DWF_EOFA_DSLASH
@ QUDA_DOMAIN_WALL_4D_DSLASH
@ QUDA_MASS_NORMALIZATION
@ QUDA_MATDAG_MAT_SOLUTION
@ QUDA_MATPCDAG_MATPC_SOLUTION
@ QUDA_TWIST_NONDEG_DOUBLET
double norm_2(void *v, int len, QudaPrecision precision)
size_t host_spinor_data_type_size
#define stag_spinor_site_size
const char * get_solution_str(QudaSolutionType type)
const char * get_flavor_str(QudaTwistFlavorType type)
const char * get_dslash_str(QudaDslashType type)
const char * get_mass_normalization_str(QudaMassNormalization type)
double3 HeavyQuarkResidualNorm(ColorSpinorField &x, ColorSpinorField &r)
void xpay(ColorSpinorField &x, double a, ColorSpinorField &y)
void ax(double a, ColorSpinorField &x)
void axpy(double a, ColorSpinorField &x, ColorSpinorField &y)
void mxpy(ColorSpinorField &x, ColorSpinorField &y)
__host__ __device__ ValueType sqrt(ValueType x)
void staggeredMatDagMat(ColorSpinorField *out, void **fatlink, void **longlink, void **ghost_fatlink, void **ghost_longlink, ColorSpinorField *in, double mass, int dagger_bit, QudaPrecision sPrecision, QudaPrecision gPrecision, ColorSpinorField *tmp, QudaParity parity, QudaDslashType dslash_type)
void staggeredDslash(ColorSpinorField *out, void **fatlink, void **longlink, void **ghost_fatlink, void **ghost_longlink, ColorSpinorField *in, int oddBit, int daggerBit, QudaPrecision sPrecision, QudaPrecision gPrecision, QudaDslashType dslash_type)
QudaSolutionType solution_type
QudaMassNormalization mass_normalization
double tol_hq_offset[QUDA_MAX_MULTI_SHIFT]
QudaTwistFlavorType twist_flavor
double_complex b_5[QUDA_MAX_DWF_LS]
double offset[QUDA_MAX_MULTI_SHIFT]
double true_res_offset[QUDA_MAX_MULTI_SHIFT]
double_complex c_5[QUDA_MAX_DWF_LS]
double tol_offset[QUDA_MAX_MULTI_SHIFT]
double true_res_hq_offset[QUDA_MAX_MULTI_SHIFT]
void wil_mat(void *out, void **gauge, void *in, double kappa, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param)
void tm_mat(void *out, void **gauge, void *in, double kappa, double mu, QudaTwistFlavorType flavor, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param)
void tm_ndeg_mat(void *evenOut, void *oddOut, void **gauge, void *evenIn, void *oddIn, double kappa, double mu, double epsilon, int daggerBit, QudaPrecision precision, QudaGaugeParam &gauge_param)
void wil_matpc(void *outEven, void **gauge, void *inEven, double kappa, QudaMatPCType matpc_type, int daggerBit, QudaPrecision precision, QudaGaugeParam &gauge_param)
void tm_ndeg_matpc(void *outEven1, void *outEven2, void **gauge, void *inEven1, void *inEven2, double kappa, double mu, double epsilon, QudaMatPCType matpc_type, int daggerBit, QudaPrecision precision, QudaGaugeParam &gauge_param)
void tm_matpc(void *outEven, void **gauge, void *inEven, double kappa, double mu, QudaTwistFlavorType flavor, QudaMatPCType matpc_type, int daggerBit, QudaPrecision precision, QudaGaugeParam &gauge_param)