15 #if defined(QMP_COMMS) 17 #elif defined(MPI_COMMS) 23 #define MAX(a,b) ((a)>(b)?(a):(b)) 78 extern void usage(
char** );
92 printfQuda(
"prec sloppy_prec link_recon sloppy_link_recon S_dimension T_dimension Ls_dimension\n");
151 int pad_size =
MAX(x_face_size, y_face_size);
152 pad_size =
MAX(pad_size, z_face_size);
153 pad_size =
MAX(pad_size, t_face_size);
198 printfQuda(
"Twisted-mass doublet non supported (yet)\n");
319 printfQuda(
"Twisted-mass doublet non supported (yet)\n");
367 int main(
int argc,
char **argv)
376 for (
int i = 1;
i < argc;
i++){
380 printf(
"ERROR: Invalid option:%s\n", argv[
i]);
430 void *gauge[4], *
clover=0, *clover_inv=0;
432 for (
int dir = 0; dir < 4; dir++) {
488 for (
int i=0;
i<nSrc;
i++) {
512 time0 /= CLOCKS_PER_SEC;
514 printfQuda(
"Device memory used:\n Spinor: %f GiB\n Gauge: %f GiB\n",
519 printfQuda(
"\nDone: %i iter / %g secs = %g Gflops, total time = %g secs\n",
567 double l2r =
sqrt(nrm2 / src2);
569 printfQuda(
"Residuals: (L2 relative) tol %g, QUDA = %g, host = %g; (heavy-quark) tol %g, QUDA = %g\n",
584 if (clover_inv)
free(clover_inv);
587 for (
int dir = 0; dir<4; dir++)
free(gauge[dir]);
QudaInverterType setup_inv[QUDA_MAX_MG_LEVEL]
int dimPartitioned(int dim)
QudaDiracFieldOrder dirac_order
QudaMassNormalization mass_normalization
double tol_hq_offset[QUDA_MAX_MULTI_SHIFT]
QudaReconstructType reconstruct_sloppy
void freeCloverQuda(void)
void construct_gauge_field(void **gauge, int type, QudaPrecision precision, QudaGaugeParam *param)
QudaPrecision prec_precondition
QudaVerbosity verbosity_precondition
enum QudaPrecision_s QudaPrecision
QudaMultigridParam newQudaMultigridParam(void)
QudaPrecision & cuda_prec
QudaSchwarzType schwarz_type
__host__ __device__ ValueType norm(const complex< ValueType > &z)
Returns the magnitude of z squared.
QudaReconstructType link_recon_precondition
void tm_mat(void *out, void **gauge, void *in, double kappa, double mu, QudaTwistFlavorType flavor, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param)
enum QudaResidualType_s QudaResidualType
int main(int argc, char **argv)
QudaInverterType inv_type_precondition
void invertQuda(void *h_x, void *h_b, QudaInvertParam *param)
QudaDslashType dslash_type
QudaReconstructType reconstruct_precondition
QudaInverterType inv_type
int return_clover_inverse
QudaSolveType smoother_solve_type[QUDA_MAX_MG_LEVEL]
double mu_factor[QUDA_MAX_MG_LEVEL]
enum QudaSolveType_s QudaSolveType
double setup_tol[QUDA_MAX_MG_LEVEL]
void loadGaugeQuda(void *h_gauge, QudaGaugeParam *param)
int process_command_line_option(int argc, char **argv, int *idx)
void setMultigridParam(QudaMultigridParam &mg_param)
void destroyMultigridQuda(void *mg_instance)
Free resources allocated by the multigrid solver.
char * strcpy(char *__dst, const char *__src)
void ax(const double &a, ColorSpinorField &x)
QudaGaugeParam gauge_param
QudaGaugeFieldOrder gauge_order
QudaTwistFlavorType twist_flavor
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)
const char * get_prec_str(QudaPrecision prec)
void loadCloverQuda(void *h_clover, void *h_clovinv, QudaInvertParam *inv_param)
double mu_factor[QUDA_MAX_MG_LEVEL]
int geo_block_size[QUDA_MAX_MG_LEVEL][QUDA_MAX_DIM]
void exit(int) __attribute__((noreturn))
QudaPrecision clover_cuda_prec_sloppy
QudaFieldLocation input_location
QudaPrecision & cuda_prec_sloppy
int n_vec[QUDA_MAX_MG_LEVEL]
QudaSolutionType solution_type
else return(__swbuf(_c, _p))
int strcmp(const char *__s1, const char *__s2)
QudaPrecision clover_cuda_prec
QudaBoolean global_reduction[QUDA_MAX_MG_LEVEL]
QudaPrecision & cuda_prec_precondition
void initQuda(int device)
QudaFieldLocation output_location
void * malloc(size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1)))
QudaPrecision clover_cuda_prec_precondition
QudaInvertParam inv_param
int printf(const char *,...) __attribute__((__format__(__printf__
QudaMultigridCycleType cycle_type[QUDA_MAX_MG_LEVEL]
void setTransferGPU(bool)
QudaReconstructType link_recon
QudaPrecision cuda_prec_sloppy
void setSpinorSiteSize(int n)
double tol_offset[QUDA_MAX_MULTI_SHIFT]
QudaInvertParam newQudaInvertParam(void)
const char * get_recon_str(QudaReconstructType recon)
QudaPrecision cuda_prec_precondition
QudaCloverFieldOrder clover_order
double omega[QUDA_MAX_MG_LEVEL]
enum QudaMatPCType_s QudaMatPCType
cpuColorSpinorField * spinorOut
void * newMultigridQuda(QudaMultigridParam *param)
double smoother_tol[QUDA_MAX_MG_LEVEL]
int gridsize_from_cmdline[]
QudaGammaBasis gamma_basis
QudaPrecision cuda_prec_sloppy
QudaVerbosity verbosity[QUDA_MAX_MG_LEVEL]
QudaReconstructType reconstruct
QudaDslashType dslash_type
QudaInverterType smoother_type
double norm_2(void *v, int len, QudaPrecision precision)
int rand(void) __attribute__((__availability__(swift
int compute_clover_inverse
QudaFieldLocation location[QUDA_MAX_MG_LEVEL]
void construct_clover_field(void *clover, double norm, double diag, QudaPrecision precision)
void * memset(void *__b, int __c, size_t __len)
int spin_block_size[QUDA_MAX_MG_LEVEL]
void wil_mat(void *out, void **gauge, void *in, double kappa, int dagger_bit, QudaPrecision precision, QudaGaugeParam &gauge_param)
QudaPrecision cuda_prec_precondition
QudaSolutionType coarse_grid_solution_type[QUDA_MAX_MG_LEVEL]
int geo_block_size[QUDA_MAX_MG_LEVEL][QUDA_MAX_DIM]
QudaBoolean generate_all_levels
enum QudaReconstructType_s QudaReconstructType
Main header file for the QUDA library.
int nu_pre[QUDA_MAX_MG_LEVEL]
#define QUDA_MAX_MG_LEVEL
Maximum number of multi-grid levels. This number may be increased if needed.
QudaTwistFlavorType twist_flavor
enum QudaDslashType_s QudaDslashType
void mxpy(ColorSpinorField &x, ColorSpinorField &y)
QudaResidualType residual_type
void wil_matpc(void *outEven, void **gauge, void *inEven, double kappa, QudaMatPCType matpc_type, int daggerBit, QudaPrecision precision, QudaGaugeParam &gauge_param)
enum QudaVerbosity_s QudaVerbosity
clock_t clock(void) __asm("_" "clock")
#define QUDA_MAX_DIM
Maximum number of dimensions supported by QUDA. In practice, no routines make use of more than 5...
int nu_post[QUDA_MAX_MG_LEVEL]
QudaComputeNullVector compute_null_vector
void read_gauge_field(const char *filename, void *gauge[], QudaPrecision prec, const int *X, int argc, char *argv[])
QudaReconstructType link_recon_sloppy
void setGaugeParam(QudaGaugeParam &gauge_param)
QudaPrecision clover_cpu_prec
QudaPrecision prec_sloppy
void initComms(int argc, char **argv, const int *commDims)
QudaInverterType setup_inv_type[QUDA_MAX_MG_LEVEL]
QudaInverterType smoother[QUDA_MAX_MG_LEVEL]
enum QudaInverterType_s QudaInverterType
QudaGaugeParam newQudaGaugeParam(void)
void setInvertParam(QudaInvertParam &inv_param)
QudaPreserveSource preserve_source
QudaInvertParam * invert_param
QudaVerbosity mg_verbosity[QUDA_MAX_MG_LEVEL]
enum QudaTwistFlavorType_s QudaTwistFlavorType