14 #define INVALID_INT QUDA_INVALID_ENUM 15 #define INVALID_DOUBLE DBL_MIN 19 #if defined INIT_PARAM 20 #define P(x, val) ret.x = val 21 #elif defined CHECK_PARAM 22 #define P(x, val) if (param->x == val) errorQuda("Parameter " #x " undefined") 23 #elif defined PRINT_PARAM 25 { if (val == INVALID_DOUBLE) printfQuda(#x " = %g\n", (double)param->x); \ 26 else printfQuda(#x " = %d\n", (int)param->x); } 28 #error INIT_PARAM, CHECK_PARAM, and PRINT_PARAM all undefined in check_params.h 34 #if defined INIT_PARAM 37 #elif defined CHECK_PARAM 44 #if defined INIT_PARAM 52 #if defined INIT_PARAM 97 #if defined INIT_PARAM 99 P(staggered_phase_applied, 0);
109 #if defined INIT_PARAM 111 P(use_resident_gauge, 0);
112 P(use_resident_mom, 0);
113 P(make_resident_gauge, 0);
114 P(make_resident_mom, 0);
115 P(return_result_gauge, 1);
116 P(return_result_mom, 1);
137 #if defined INIT_PARAM 140 #elif defined CHECK_PARAM 147 #if defined INIT_PARAM 161 P(check_interval, 0);
194 #if defined INIT_PARAM 206 #if defined INIT_PARAM 210 #elif defined CHECK_PARAM 218 #if defined INIT_PARAM 244 P(compute_clover_trlog, 0);
246 P(compute_clover_inverse, 0);
248 P(return_clover_inverse, 0);
269 #if defined INIT_PARAM 274 #elif defined CHECK_PARAM 275 static void checkInvertParam(
QudaInvertParam *param,
void *out_ptr=
nullptr,
void *in_ptr=
nullptr) {
284 #if defined INIT_PARAM 334 P(use_alternative_reliable, 0);
335 P(use_sloppy_partial_accumulator, 0);
337 P(max_res_increase, 1);
338 P(max_res_increase_total, 10);
339 P(max_hq_res_increase, 1);
340 P(max_hq_res_restart_total, 10);
341 P(heavy_quark_check, 10);
361 P(compute_action, 0);
362 P(compute_true_res, 1);
413 #if defined INIT_PARAM 439 #if defined INIT_PARAM 447 #if defined INIT_PARAM 461 #if defined INIT_PARAM 463 P(preconditioner, 0);
468 P(precondition_cycle, 1);
476 P(precondition_cycle, 0);
488 #if defined(INIT_PARAM) 489 newQudaCloverParam(param);
490 #elif defined(CHECK_PARAM) 491 checkCloverParam(param);
518 #elif defined(PRINT_PARAM) 525 #if defined INIT_PARAM 550 #if defined INIT_PARAM 551 P(use_resident_solution, 0);
552 P(make_resident_solution, 0);
559 #if defined INIT_PARAM 560 P(chrono_use_resident, 0);
561 P(chrono_make_resident, 0);
562 P(chrono_replace_last, 0);
563 P(chrono_max_dim, 0);
573 #if !defined CHECK_PARAM 580 #if defined INIT_PARAM 592 #if defined INIT_PARAM 595 #elif defined CHECK_PARAM 604 #elif defined CHECK_PARAM 636 for (
int i=0; i<n_level; i++) {
705 P(smoother_schwarz_cycle[i], 1);
771 for (
int i=1; i<n_level-1; i++)
773 errorQuda(
"n_vec %d != %d must be equal on all levels if generate_all_levels == false",
790 for (
int i = 0; i < n_level - 1; i++) {
803 #elif defined(PRINT_PARAM) 818 #undef INVALID_DOUBLE QudaDslashType dslash_type
QudaReconstructType reconstruct_sloppy
QudaMultigridParam newQudaMultigridParam(void)
QudaInverterType inv_type_precondition
int setup_maxiter_refresh[QUDA_MAX_MG_LEVEL]
QudaDslashType dslash_type
QudaReconstructType reconstruct_precondition
QudaInverterType inv_type
QudaInverterType inv_type
QudaCABasis coarse_solver_ca_basis[QUDA_MAX_MG_LEVEL]
QudaPrecision & cuda_prec
void printQudaInvertParam(QudaInvertParam *param)
QudaPrecision & cuda_prec_refinement_sloppy
QudaPrecision cuda_prec_refinement_sloppy
QudaPrecision clover_cuda_prec_refinement_sloppy
void printQudaGaugeParam(QudaGaugeParam *param)
QudaPrecision & cuda_prec_precondition
QudaSchwarzType schwarz_type[QUDA_MAX_MG_LEVEL]
QudaPrecision clover_cuda_prec_sloppy
QudaPrecision chrono_precision
QudaFieldLocation input_location
void printQudaEigParam(QudaEigParam *param)
int n_vec[QUDA_MAX_MG_LEVEL]
int coarse_solver_maxiter[QUDA_MAX_MG_LEVEL]
QudaPrecision & cuda_prec_ritz
int geo_block_size[QUDA_MAX_MG_LEVEL][QUDA_MAX_DIM]
QudaPrecision clover_cuda_prec
QudaPrecision & cuda_prec_sloppy
int num_setup_iter[QUDA_MAX_MG_LEVEL]
QudaSolutionType solution_type
QudaFieldLocation output_location
QudaPrecision clover_cuda_prec_precondition
int coarse_solver_ca_basis_size[QUDA_MAX_MG_LEVEL]
QudaSolveType smoother_solve_type[QUDA_MAX_MG_LEVEL]
QudaPrecision cuda_prec_sloppy
int solution_accumulator_pipeline
QudaInvertParam newQudaInvertParam(void)
QudaPrecision cuda_prec_precondition
double coarse_solver_ca_lambda_max[QUDA_MAX_MG_LEVEL]
double setup_ca_lambda_min[QUDA_MAX_MG_LEVEL]
double setup_ca_lambda_max[QUDA_MAX_MG_LEVEL]
QudaPrecision cuda_prec_sloppy
QudaFieldLocation setup_location[QUDA_MAX_MG_LEVEL]
QudaReconstructType reconstruct
void printQudaMultigridParam(QudaMultigridParam *param)
QudaInverterType coarse_solver[QUDA_MAX_MG_LEVEL]
double smoother_tol[QUDA_MAX_MG_LEVEL]
QudaPrecision cuda_prec_refinement_sloppy
double coarse_solver_tol[QUDA_MAX_MG_LEVEL]
QudaFieldLocation get_pointer_location(const void *ptr)
int nu_pre[QUDA_MAX_MG_LEVEL]
QudaPrecision cuda_prec_precondition
QudaGaugeFieldOrder gauge_order
QudaBoolean generate_all_levels
#define QUDA_MAX_MG_LEVEL
Maximum number of multi-grid levels. This number may be increased if needed.
int setup_ca_basis_size[QUDA_MAX_MG_LEVEL]
double setup_tol[QUDA_MAX_MG_LEVEL]
QudaMemoryType mem_type_ritz
void printQudaCloverParam(QudaInvertParam *param)
double mu_factor[QUDA_MAX_MG_LEVEL]
QudaTwistFlavorType twist_flavor
int setup_maxiter[QUDA_MAX_MG_LEVEL]
QudaResidualType residual_type
QudaComputeNullVector compute_null_vector
double coarse_solver_ca_lambda_min[QUDA_MAX_MG_LEVEL]
QudaCABasis setup_ca_basis[QUDA_MAX_MG_LEVEL]
int n_block_ortho[QUDA_MAX_MG_LEVEL]
int nu_post[QUDA_MAX_MG_LEVEL]
QudaEigParam newQudaEigParam(void)
QudaReconstructType reconstruct_refinement_sloppy
QudaGaugeParam newQudaGaugeParam(void)
QudaInvertParam * invert_param
double reliable_delta_refinement