14 #include <quda_define.h>
17 #ifndef __CUDACC_RTC__
18 #define double_complex double _Complex
20 #define double_complex double2
1030 void lanczosQuda(
int k0,
int m,
void *hp_Apsi,
void *hp_r,
void *hp_V,
void *hp_alpha,
void *hp_beta,
1236 void computeKSLinkQuda(
void* fatlink,
void* longlink,
void* ulink,
void* inlink,
1262 double* loop_coeff,
int num_paths,
int max_length,
double dt,
1361 void computeCloverForceQuda(
void *mom,
double dt,
void **x,
void **p,
double *coeff,
double kappa2,
double ck,
1362 int nvector,
double multiplicity,
void *gauge,
1396 const double level2_coeff[6],
1397 const double fat7_coeff[6],
1398 const void*
const w_link,
1399 const void*
const v_link,
1400 const void*
const u_link,
1451 void performAPEnStep(
unsigned int n_steps,
double alpha,
int meas_interval);
1515 const unsigned int verbose_interval,
const double relax_boost,
const double tolerance,
1516 const unsigned int reunit_interval,
const unsigned int stopWtheta,
1533 const unsigned int verbose_interval,
const double alpha,
const unsigned int autotune,
1580 #undef double_complex
QudaGaugeParam gauge_param
QudaInvertParam inv_param
enum QudaCloverFieldOrder_s QudaCloverFieldOrder
enum QudaSolveType_s QudaSolveType
enum QudaWFlowType_s QudaWFlowType
enum QudaBLASOperation_s QudaBLASOperation
enum QudaPrecision_s QudaPrecision
enum QudaUseInitGuess_s QudaUseInitGuess
enum QudaGaugeFixed_s QudaGaugeFixed
enum QudaStaggeredPhase_s QudaStaggeredPhase
enum QudaTwistFlavorType_s QudaTwistFlavorType
enum QudaDagType_s QudaDagType
enum QudaTransferType_s QudaTransferType
enum QudaMultigridCycleType_s QudaMultigridCycleType
enum QudaGaugeFieldOrder_s QudaGaugeFieldOrder
enum QudaBLASDataOrder_s QudaBLASDataOrder
enum QudaPreserveSource_s QudaPreserveSource
enum QudaTboundary_s QudaTboundary
enum QudaDslashType_s QudaDslashType
enum QudaBoolean_s QudaBoolean
enum QudaSolutionType_s QudaSolutionType
enum QudaEigSpectrumType_s QudaEigSpectrumType
enum QudaInverterType_s QudaInverterType
enum QudaFieldLocation_s QudaFieldLocation
enum QudaMassNormalization_s QudaMassNormalization
enum QudaBLASDataType_s QudaBLASDataType
enum QudaExtLibType_s QudaExtLibType
enum QudaEigType_s QudaEigType
enum QudaMatPCType_s QudaMatPCType
enum QudaSetupType_s QudaSetupType
enum QudaComputeNullVector_s QudaComputeNullVector
enum QudaResidualType_s QudaResidualType
enum QudaMemoryType_s QudaMemoryType
enum QudaReconstructType_s QudaReconstructType
enum QudaCABasis_s QudaCABasis
enum QudaContractType_s QudaContractType
enum QudaSchwarzType_s QudaSchwarzType
enum QudaVerbosity_s QudaVerbosity
enum QudaDiracFieldOrder_s QudaDiracFieldOrder
enum QudaGammaBasis_s QudaGammaBasis
enum QudaSolverNormalization_s QudaSolverNormalization
enum QudaParity_s QudaParity
enum QudaLinkType_s QudaLinkType
__device__ __host__ Matrix< T, 3 > inverse(const Matrix< T, 3 > &u)
struct QudaInvertParam_s QudaInvertParam
double momActionQuda(void *momentum, QudaGaugeParam *param)
void invertMultiSrcQuda(void **_hp_x, void **_hp_b, QudaInvertParam *param, void *h_gauge, QudaGaugeParam *gauge_param)
Perform the solve like @invertQuda but for multiple rhs by spliting the comm grid into sub-partitions...
void gaussGaugeQuda(unsigned long long seed, double sigma)
Generate Gaussian distributed fields and store in the resident gauge field. We create a Gaussian-dist...
void dumpMultigridQuda(void *mg_instance, QudaMultigridParam *param)
Dump the null-space vectors to disk.
void createCloverQuda(QudaInvertParam *param)
void * createGaugeFieldQuda(void *gauge, int geometry, QudaGaugeParam *param)
void printQudaMultigridParam(QudaMultigridParam *param)
void destroyGaugeFieldQuda(void *gauge)
void computeStaggeredForceQuda(void *mom, double dt, double delta, void *gauge, void **x, QudaGaugeParam *gauge_param, QudaInvertParam *invert_param)
QudaBLASParam newQudaBLASParam(void)
void destroyDeflationQuda(void *df_instance)
void momResidentQuda(void *mom, QudaGaugeParam *param)
int computeGaugeForceQuda(void *mom, void *sitelink, int ***input_path_buf, int *path_length, double *loop_coeff, int num_paths, int max_length, double dt, QudaGaugeParam *qudaGaugeParam)
void printQudaInvertParam(QudaInvertParam *param)
void setMPICommHandleQuda(void *mycomm)
void * newMultigridQuda(QudaMultigridParam *param)
void computeCloverForceQuda(void *mom, double dt, void **x, void **p, double *coeff, double kappa2, double ck, int nvector, double multiplicity, void *gauge, QudaGaugeParam *gauge_param, QudaInvertParam *inv_param)
void plaqQuda(double plaq[3])
void performAPEnStep(unsigned int n_steps, double alpha, int meas_interval)
QudaGaugeParam newQudaGaugeParam(void)
void blasGEMMQuda(void *arrayA, void *arrayB, void *arrayC, QudaBoolean native, QudaBLASParam *param)
Strided Batched GEMM.
void invertMultiSrcCloverQuda(void **_hp_x, void **_hp_b, QudaInvertParam *param, void *h_gauge, QudaGaugeParam *gauge_param, void *h_clover, void *h_clovinv)
Really the same with @invertMultiSrcQuda but for clover-style fermions, by accepting pointers to dire...
void invertMultiShiftQuda(void **_hp_x, void *_hp_b, QudaInvertParam *param)
struct QudaGaugeObservableParam_s QudaGaugeObservableParam
void eigensolveQuda(void **h_evecs, double_complex *h_evals, QudaEigParam *param)
void printQudaEigParam(QudaEigParam *param)
void setVerbosityQuda(QudaVerbosity verbosity, const char prefix[], FILE *outfile)
void saveGaugeFieldQuda(void *outGauge, void *inGauge, QudaGaugeParam *param)
void initQudaDevice(int device)
struct QudaEigParam_s QudaEigParam
void dslashQuda(void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity)
void initQuda(int device)
void performWuppertalnStep(void *h_out, void *h_in, QudaInvertParam *param, unsigned int n_steps, double alpha)
void invertMultiSrcStaggeredQuda(void **_hp_x, void **_hp_b, QudaInvertParam *param, void *milc_fatlinks, void *milc_longlinks, QudaGaugeParam *gauge_param)
Really the same with @invertMultiSrcQuda but for staggered-style fermions, by accepting pointers to f...
void dslashMultiSrcCloverQuda(void **_hp_x, void **_hp_b, QudaInvertParam *param, QudaParity parity, void *h_gauge, QudaGaugeParam *gauge_param, void *h_clover, void *h_clovinv)
Really the same with @dslashMultiSrcQuda but for clover-style fermions, by accepting pointers to dire...
int computeGaugeFixingFFTQuda(void *gauge, const unsigned int gauge_dir, const unsigned int Nsteps, const unsigned int verbose_interval, const double alpha, const unsigned int autotune, const double tolerance, const unsigned int stopWtheta, QudaGaugeParam *param, double *timeinfo)
Gauge fixing with Steepest descent method with FFTs with support for single GPU only.
void staggeredPhaseQuda(void *gauge_h, QudaGaugeParam *param)
void dslashMultiSrcQuda(void **_hp_x, void **_hp_b, QudaInvertParam *param, QudaParity parity, void *h_gauge, QudaGaugeParam *gauge_param)
Perform the solve like @dslashQuda but for multiple rhs by spliting the comm grid into sub-partitions...
void MatDagMatQuda(void *h_out, void *h_in, QudaInvertParam *inv_param)
void qudaSetCommHandle(void *mycomm)
void contractQuda(const void *x, const void *y, void *result, const QudaContractType cType, QudaInvertParam *param, const int *X)
QudaMultigridParam newQudaMultigridParam(void)
QudaGaugeObservableParam newQudaGaugeObservableParam(void)
void updateGaugeFieldQuda(void *gauge, void *momentum, double dt, int conj_mom, int exact, QudaGaugeParam *param)
void loadGaugeQuda(void *h_gauge, QudaGaugeParam *param)
void pack_ghost(void **cpuLink, void **cpuGhost, int nFace, QudaPrecision precision)
int computeGaugeFixingOVRQuda(void *gauge, const unsigned int gauge_dir, const unsigned int Nsteps, const unsigned int verbose_interval, const double relax_boost, const double tolerance, const unsigned int reunit_interval, const unsigned int stopWtheta, QudaGaugeParam *param, double *timeinfo)
Gauge fixing with overrelaxation with support for single and multi GPU.
void loadCloverQuda(void *h_clover, void *h_clovinv, QudaInvertParam *inv_param)
void freeCloverQuda(void)
struct QudaBLASParam_s QudaBLASParam
int(* QudaCommsMap)(const int *coords, void *fdata)
void saveGaugeQuda(void *h_gauge, QudaGaugeParam *param)
void computeKSLinkQuda(void *fatlink, void *longlink, void *ulink, void *inlink, double *path_coeff, QudaGaugeParam *param)
struct QudaGaugeParam_s QudaGaugeParam
void performWFlownStep(unsigned int n_steps, double step_size, int meas_interval, QudaWFlowType wflow_type)
QudaInvertParam newQudaInvertParam(void)
void dslashMultiSrcStaggeredQuda(void **_hp_x, void **_hp_b, QudaInvertParam *param, QudaParity parity, void *milc_fatlinks, void *milc_longlinks, QudaGaugeParam *gauge_param)
Really the same with @dslashMultiSrcQuda but for staggered-style fermions, by accepting pointers to f...
void flushChronoQuda(int index)
Flush the chronological history for the given index.
QudaEigParam newQudaEigParam(void)
void copyExtendedResidentGaugeQuda(void *resident_gauge, QudaFieldLocation loc)
struct QudaMultigridParam_s QudaMultigridParam
void gaugeObservablesQuda(QudaGaugeObservableParam *param)
Calculates a variety of gauge-field observables. If a smeared gauge field is presently loaded (in gau...
void updateMultigridQuda(void *mg_instance, QudaMultigridParam *param)
Updates the multigrid preconditioner for the new gauge / clover field.
void cloverQuda(void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity, int inverse)
void initCommsGridQuda(int nDim, const int *dims, QudaCommsMap func, void *fdata)
void destroyMultigridQuda(void *mg_instance)
Free resources allocated by the multigrid solver.
void invertQuda(void *h_x, void *h_b, QudaInvertParam *param)
void computeHISQForceQuda(void *momentum, double dt, const double level2_coeff[6], const double fat7_coeff[6], const void *const w_link, const void *const v_link, const void *const u_link, void **quark, int num, int num_naik, double **coeff, QudaGaugeParam *param)
void performSTOUTnStep(unsigned int n_steps, double rho, int meas_interval)
void lanczosQuda(int k0, int m, void *hp_Apsi, void *hp_r, void *hp_V, void *hp_alpha, void *hp_beta, QudaEigParam *eig_param)
void printQudaBLASParam(QudaBLASParam *param)
void * newDeflationQuda(QudaEigParam *param)
void updateR()
update the radius for halos.
void printQudaGaugeParam(QudaGaugeParam *param)
void performOvrImpSTOUTnStep(unsigned int n_steps, double rho, double epsilon, int meas_interval)
void printQudaGaugeObservableParam(QudaGaugeObservableParam *param)
void projectSU3Quda(void *gauge_h, double tol, QudaGaugeParam *param)
void MatQuda(void *h_out, void *h_in, QudaInvertParam *inv_param)
#define QUDA_MAX_DWF_LS
Maximum length of the Ls dimension for domain-wall fermions.
#define QUDA_MAX_MG_LEVEL
Maximum number of multi-grid levels. This number may be increased if needed.
#define QUDA_MAX_DIM
Maximum number of dimensions supported by QUDA. In practice, no routines make use of more than 5.
#define QUDA_MAX_MULTI_SHIFT
Maximum number of shifts supported by the multi-shift solver. This number may be changed if need be.
QudaBLASDataOrder data_order
QudaBLASOperation trans_a
QudaBLASDataType data_type
QudaBLASOperation trans_b
void * preserve_deflation_space
QudaEigSpectrumType spectrum
QudaBoolean import_vectors
QudaBoolean io_parity_inflate
QudaPrecision cuda_prec_ritz
QudaBoolean compute_gamma5
QudaFieldLocation location
QudaExtLibType extlib_type
QudaBoolean preserve_deflation
QudaBoolean require_convergence
QudaBoolean preserve_evals
QudaInvertParam * invert_param
QudaMemoryType mem_type_ritz
QudaBoolean compute_qcharge_density
QudaBoolean compute_qcharge
QudaBoolean compute_plaquette
QudaReconstructType reconstruct_precondition
QudaReconstructType reconstruct
QudaPrecision cuda_prec_precondition
QudaPrecision cuda_prec_refinement_sloppy
QudaFieldLocation location
QudaPrecision cuda_prec_sloppy
QudaReconstructType reconstruct_sloppy
QudaGaugeFieldOrder gauge_order
QudaReconstructType reconstruct_eigensolver
QudaStaggeredPhase staggered_phase_type
QudaReconstructType reconstruct_refinement_sloppy
int staggered_phase_applied
QudaPrecision cuda_prec_eigensolver
int use_sloppy_partial_accumulator
QudaPrecision cuda_prec_refinement_sloppy
QudaSolutionType solution_type
QudaBoolean native_blas_lapack
double iter_res_offset[QUDA_MAX_MULTI_SHIFT]
QudaCloverFieldOrder clover_order
QudaSchwarzType schwarz_type
QudaMassNormalization mass_normalization
int use_alternative_reliable
QudaPreserveSource preserve_source
double tol_hq_offset[QUDA_MAX_MULTI_SHIFT]
int solution_accumulator_pipeline
QudaFieldLocation clover_location
QudaResidualType residual_type
QudaPrecision clover_cuda_prec_refinement_sloppy
int make_resident_solution
QudaPrecision cuda_prec_eigensolver
QudaExtLibType extlib_type
int max_res_increase_total
QudaPrecision clover_cuda_prec
double reliable_delta_refinement
int split_grid[QUDA_MAX_DIM]
int compute_clover_inverse
QudaTwistFlavorType twist_flavor
QudaPrecision clover_cpu_prec
QudaPrecision cuda_prec_ritz
int max_hq_res_restart_total
QudaDslashType dslash_type
int return_clover_inverse
QudaPrecision clover_cuda_prec_precondition
double_complex b_5[QUDA_MAX_DWF_LS]
QudaPrecision chrono_precision
QudaDslashType dslash_type_precondition
int num_src_per_sub_partition
QudaVerbosity verbosity_precondition
QudaPrecision clover_cuda_prec_eigensolver
double offset[QUDA_MAX_MULTI_SHIFT]
QudaInverterType inv_type
QudaSolverNormalization solver_normalization
double residue[QUDA_MAX_MULTI_SHIFT]
double true_res_offset[QUDA_MAX_MULTI_SHIFT]
double_complex c_5[QUDA_MAX_DWF_LS]
QudaPrecision clover_cuda_prec_sloppy
double tol_offset[QUDA_MAX_MULTI_SHIFT]
QudaInverterType inv_type_precondition
QudaGammaBasis gamma_basis
QudaPrecision cuda_prec_sloppy
QudaFieldLocation input_location
QudaFieldLocation output_location
QudaPrecision cuda_prec_precondition
int use_resident_solution
QudaDiracFieldOrder dirac_order
double true_res_hq_offset[QUDA_MAX_MULTI_SHIFT]
QudaUseInitGuess use_init_guess
QudaBoolean pre_orthonormalize
int smoother_schwarz_cycle[QUDA_MAX_MG_LEVEL]
double coarse_solver_ca_lambda_min[QUDA_MAX_MG_LEVEL]
double setup_ca_lambda_max[QUDA_MAX_MG_LEVEL]
QudaSolutionType coarse_grid_solution_type[QUDA_MAX_MG_LEVEL]
double coarse_solver_tol[QUDA_MAX_MG_LEVEL]
QudaMultigridCycleType cycle_type[QUDA_MAX_MG_LEVEL]
double omega[QUDA_MAX_MG_LEVEL]
QudaBoolean thin_update_only
int setup_maxiter_refresh[QUDA_MAX_MG_LEVEL]
QudaPrecision precision_null[QUDA_MAX_MG_LEVEL]
char vec_infile[QUDA_MAX_MG_LEVEL][256]
int nu_post[QUDA_MAX_MG_LEVEL]
QudaBoolean use_eig_solver[QUDA_MAX_MG_LEVEL]
int coarse_solver_maxiter[QUDA_MAX_MG_LEVEL]
QudaEigParam * eig_param[QUDA_MAX_MG_LEVEL]
int n_vec[QUDA_MAX_MG_LEVEL]
int geo_block_size[QUDA_MAX_MG_LEVEL][QUDA_MAX_DIM]
QudaInverterType coarse_solver[QUDA_MAX_MG_LEVEL]
int coarse_solver_ca_basis_size[QUDA_MAX_MG_LEVEL]
QudaTransferType transfer_type[QUDA_MAX_MG_LEVEL]
QudaFieldLocation setup_location[QUDA_MAX_MG_LEVEL]
QudaBoolean post_orthonormalize
int num_setup_iter[QUDA_MAX_MG_LEVEL]
double mu_factor[QUDA_MAX_MG_LEVEL]
QudaCABasis setup_ca_basis[QUDA_MAX_MG_LEVEL]
QudaInverterType setup_inv_type[QUDA_MAX_MG_LEVEL]
QudaInverterType smoother[QUDA_MAX_MG_LEVEL]
int setup_maxiter[QUDA_MAX_MG_LEVEL]
int setup_ca_basis_size[QUDA_MAX_MG_LEVEL]
QudaBoolean preserve_deflation
double coarse_solver_ca_lambda_max[QUDA_MAX_MG_LEVEL]
char vec_outfile[QUDA_MAX_MG_LEVEL][256]
QudaBoolean run_low_mode_check
double setup_ca_lambda_min[QUDA_MAX_MG_LEVEL]
double smoother_tol[QUDA_MAX_MG_LEVEL]
QudaCABasis coarse_solver_ca_basis[QUDA_MAX_MG_LEVEL]
int nu_pre[QUDA_MAX_MG_LEVEL]
QudaBoolean vec_store[QUDA_MAX_MG_LEVEL]
QudaSolveType smoother_solve_type[QUDA_MAX_MG_LEVEL]
QudaFieldLocation location[QUDA_MAX_MG_LEVEL]
QudaVerbosity verbosity[QUDA_MAX_MG_LEVEL]
QudaBoolean setup_minimize_memory
int spin_block_size[QUDA_MAX_MG_LEVEL]
int n_block_ortho[QUDA_MAX_MG_LEVEL]
QudaBoolean generate_all_levels
QudaComputeNullVector compute_null_vector
QudaSchwarzType smoother_schwarz_type[QUDA_MAX_MG_LEVEL]
QudaBoolean run_oblique_proj_check
QudaInvertParam * invert_param
double setup_tol[QUDA_MAX_MG_LEVEL]
QudaPrecision smoother_halo_precision[QUDA_MAX_MG_LEVEL]
QudaBoolean global_reduction[QUDA_MAX_MG_LEVEL]
QudaBoolean vec_load[QUDA_MAX_MG_LEVEL]