1 #ifndef _QUDA_MILC_INTERFACE_H
2 #define _QUDA_MILC_INTERFACE_H
15 #if __COMPUTE_CAPABILITY__ >= 600
16 #define USE_QUDA_MANAGED 1
42 double boundary_phase[4];
193 const double act_path_coeff[6],
212 const double path_coeff[6],
233 const void*
const milc_fatlink,
234 const void*
const milc_longlink,
265 double target_residual,
266 double target_fermilab_residual,
267 const int *
const domain_overlap,
268 const void*
const fatlink,
269 const void*
const longlink,
272 double*
const final_residual,
273 double*
const final_fermilab_residual,
302 double target_residual,
303 double target_fermilab_residual,
304 const void*
const milc_fatlink,
305 const void*
const milc_longlink,
308 double*
const final_resid,
309 double*
const final_rel_resid,
328 const void *
const milc_fatlink,
const void *
const milc_longlink,
329 const char *
const mg_param_file);
356 double target_residual,
double target_fermilab_residual,
const void *
const milc_fatlink,
357 const void *
const milc_longlink,
void *mg_pack_ptr,
int mg_rebuild_type,
void *source,
358 void *solution,
double *
const final_residual,
double *
const final_fermilab_residual,
int *num_iters);
393 double target_residual,
394 double target_fermilab_residual,
395 const void*
const fatlink,
396 const void*
const longlink,
398 void** solutionArray,
399 double*
const final_residual,
400 double*
const final_fermilab_residual,
429 int external_precision,
432 double*
const offset,
434 const double* target_residual,
435 const double* target_fermilab_residual,
436 const void*
const milc_fatlink,
437 const void*
const milc_longlink,
439 void** solutionArray,
440 double*
const final_residual,
441 double*
const final_fermilab_residual,
473 int external_precision,
477 double target_residual,
478 double target_fermilab_residual,
479 const void*
const fatlink,
480 const void*
const longlink,
485 const int last_rhs_flag,
486 double*
const final_residual,
487 double*
const final_fermilab_residual,
517 double target_residual,
518 double target_fermilab_residual,
519 const void* milc_link,
521 void* milc_clover_inv,
524 double*
const final_residual,
525 double*
const final_fermilab_residual,
557 int external_precision,
562 double target_residual,
563 double target_fermilab_residual,
564 const void* milc_link,
566 void* milc_clover_inv,
571 const int last_rhs_flag,
572 double*
const final_residual,
573 double*
const final_fermilab_residual,
588 const void* milc_link) ;
617 void* milc_clover_inv,
658 double*
const offset,
662 const double* target_residual,
663 const void* milc_link,
665 void* milc_clover_inv,
667 void** solutionArray,
668 double*
const final_residual,
696 const double level2_coeff[6],
697 const double fat7_coeff[6],
698 const void*
const w_link,
699 const void*
const v_link,
700 const void*
const u_link,
701 void*
const milc_momentum);
716 double milc_loop_coeff[3],
732 void qudaGaugeForcePhased(
int precision,
int num_loop_types,
double milc_loop_coeff[3],
double eb3,
856 double ck,
int nvec,
double multiplicity,
void *gauge,
int precision,
970 const unsigned int gauge_dir,
972 const int verbose_interval,
973 const double relax_boost,
974 const double tolerance,
975 const unsigned int reunit_interval,
976 const unsigned int stopWtheta,
994 unsigned int gauge_dir,
996 int verbose_interval,
998 unsigned int autotune,
1000 unsigned int stopWtheta,
1011 const double act_path_coeff[6],
1012 const void*
const one_link_src[4],
1013 const void*
const naik_src[4],
1014 const void*
const link,
1015 void*
const milc_momentum);
quda::mgarray< int > nvec
QudaSolutionType solution_type
enum QudaSolveType_s QudaSolveType
enum QudaPrecision_s QudaPrecision
enum QudaSolutionType_s QudaSolutionType
enum QudaInverterType_s QudaInverterType
enum QudaFieldLocation_s QudaFieldLocation
enum QudaExtLibType_s QudaExtLibType
enum QudaMemoryType_s QudaMemoryType
enum QudaVerbosity_s QudaVerbosity
enum QudaParity_s QudaParity
__host__ __device__ ValueType arg(const complex< ValueType > &z)
Returns the phase angle of z.
Main header file for the QUDA library.
void qudaLoadGaugeField(int external_precision, int quda_precision, QudaInvertArgs_t inv_args, const void *milc_link)
void qudaDDInvert(int external_precision, int quda_precision, double mass, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const int *const domain_overlap, const void *const fatlink, const void *const longlink, void *source, void *solution, double *const final_residual, double *const final_fermilab_residual, int *num_iters)
void qudaCloverInvert(int external_precision, int quda_precision, double kappa, double clover_coeff, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const void *milc_link, void *milc_clover, void *milc_clover_inv, void *source, void *solution, double *const final_residual, double *const final_fermilab_residual, int *num_iters)
void qudaGaugeFixingOVR(const int precision, const unsigned int gauge_dir, const int Nsteps, const int verbose_interval, const double relax_boost, const double tolerance, const unsigned int reunit_interval, const unsigned int stopWtheta, void *milc_sitelink)
Gauge fixing with overrelaxation with support for single and multi GPU.
void qudaCloverTrace(void *out, void *dummy, int mu, int nu)
void qudaComputeOprod(int precision, int num_terms, int num_naik_terms, double **coeff, double scale, void **quark_field, void *oprod[3])
void qudaUnitarizeSU3Phased(int prec, double tol, QudaMILCSiteArg_t *arg, int phase_in)
void qudaMultigridDestroy(void *mg_pack_ptr)
void qudaInit(QudaInitArgs_t input)
void qudaInvertMsrc(int external_precision, int quda_precision, double mass, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const void *const fatlink, const void *const longlink, void **sourceArray, void **solutionArray, double *const final_residual, double *const final_fermilab_residual, int *num_iters, int num_src)
void qudaLoadCloverField(int external_precision, int quda_precision, QudaInvertArgs_t inv_args, void *milc_clover, void *milc_clover_inv, QudaSolutionType solution_type, QudaSolveType solve_type, double clover_coeff, int compute_trlog, double *trlog)
void qudaCloverMultishiftInvert(int external_precision, int quda_precision, int num_offsets, double *const offset, double kappa, double clover_coeff, QudaInvertArgs_t inv_args, const double *target_residual, const void *milc_link, void *milc_clover, void *milc_clover_inv, void *source, void **solutionArray, double *const final_residual, int *num_iters)
void qudaUnitarizeSU3(int prec, double tol, QudaMILCSiteArg_t *arg)
void qudaGaugeForce(int precision, int num_loop_types, double milc_loop_coeff[3], double eb3, QudaMILCSiteArg_t *arg)
void qudaRephase(int prec, void *gauge, int flag, double i_mu)
void * qudaAllocateManaged(size_t bytes)
void qudaFreeManaged(void *ptr)
void qudaHisqForce(int precision, int num_terms, int num_naik_terms, double dt, double **coeff, void **quark_field, 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 *const milc_momentum)
void qudaInvertMG(int external_precision, int quda_precision, double mass, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const void *const milc_fatlink, const void *const milc_longlink, void *mg_pack_ptr, int mg_rebuild_type, void *source, void *solution, double *const final_residual, double *const final_fermilab_residual, int *num_iters)
void qudaMultishiftInvert(int external_precision, int precision, int num_offsets, double *const offset, QudaInvertArgs_t inv_args, const double *target_residual, const double *target_fermilab_residual, const void *const milc_fatlink, const void *const milc_longlink, void *source, void **solutionArray, double *const final_residual, double *const final_fermilab_residual, int *num_iters)
void qudaSetLayout(QudaLayout_t layout)
void qudaSetMPICommHandle(void *mycomm)
void qudaFreeGaugeField()
double qudaMomAction(int precision, QudaMILCSiteArg_t *arg)
void * qudaCreateExtendedGaugeField(void *gauge, int geometry, int precision)
void qudaGaugeFixingFFT(int precision, unsigned int gauge_dir, int Nsteps, int verbose_interval, double alpha, unsigned int autotune, double tolerance, unsigned int stopWtheta, void *milc_sitelink)
Gauge fixing with Steepest descent method with FFTs with support for single GPU only.
void * qudaMultigridCreate(int external_precision, int quda_precision, double mass, QudaInvertArgs_t inv_args, const void *const milc_fatlink, const void *const milc_longlink, const char *const mg_param_file)
void qudaEigCGCloverInvert(int external_precision, int quda_precision, double kappa, double clover_coeff, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const void *milc_link, void *milc_clover, void *milc_clover_inv, void *source, void *solution, QudaEigArgs_t eig_args, const int rhs_idx, const int last_rhs_flag, double *const final_residual, double *const final_fermilab_residual, int *num_iters)
void qudaFreePinned(void *ptr)
void qudaInvert(int external_precision, int quda_precision, double mass, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const void *const milc_fatlink, const void *const milc_longlink, void *source, void *solution, double *const final_resid, double *const final_rel_resid, int *num_iters)
void * qudaResidentExtendedGaugeField(void *gauge, int geometry, int precision)
void * qudaAllocatePinned(size_t bytes)
void qudaHisqParamsInit(QudaHisqParams_t hisq_params)
void qudaMomLoad(int precision, QudaMILCSiteArg_t *arg)
void qudaUpdateU(int precision, double eps, QudaMILCSiteArg_t *arg)
void qudaCloverDerivative(void *out, void *gauge, void *oprod, int mu, int nu, double coeff, int precision, int parity, int conjugate)
void qudaAsqtadForce(int precision, const double act_path_coeff[6], const void *const one_link_src[4], const void *const naik_src[4], const void *const link, void *const milc_momentum)
void qudaEigCGInvert(int external_precision, int quda_precision, double mass, QudaInvertArgs_t inv_args, double target_residual, double target_fermilab_residual, const void *const fatlink, const void *const longlink, void *source, void *solution, QudaEigArgs_t eig_args, const int rhs_idx, const int last_rhs_flag, double *const final_residual, double *const final_fermilab_residual, int *num_iters)
void qudaLoadKSLink(int precision, QudaFatLinkArgs_t fatlink_args, const double act_path_coeff[6], void *inlink, void *fatlink, void *longlink)
void qudaUpdateUPhasedPipeline(int precision, double eps, QudaMILCSiteArg_t *arg, int phase_in, int want_gaugepipe)
void qudaGaugeForcePhased(int precision, int num_loop_types, double milc_loop_coeff[3], double eb3, QudaMILCSiteArg_t *arg, int phase_in)
void qudaDslash(int external_precision, int quda_precision, QudaInvertArgs_t inv_args, const void *const milc_fatlink, const void *const milc_longlink, void *source, void *solution, int *num_iters)
void qudaCloverForce(void *mom, double dt, void **x, void **p, double *coeff, double kappa, double ck, int nvec, double multiplicity, void *gauge, int precision, QudaInvertArgs_t inv_args)
void qudaDestroyGaugeField(void *gauge)
void qudaSaveGaugeField(void *gauge, void *inGauge)
void qudaFreeCloverField()
void qudaLoadUnitarizedLink(int precision, QudaFatLinkArgs_t fatlink_args, const double path_coeff[6], void *inlink, void *fatlink, void *ulink)
void qudaUpdateUPhased(int precision, double eps, QudaMILCSiteArg_t *arg, int phase_in)
void qudaMomSave(int precision, QudaMILCSiteArg_t *arg)
void * qudaCreateGaugeField(void *gauge, int geometry, int precision)
QudaExtLibType deflation_ext_lib
QudaMemoryType mem_type_ritz
QudaFieldLocation location_ritz
QudaExtLibType solver_ext_lib
double reunit_svd_abs_error
double reunit_svd_rel_error
int use_resident_solution
QudaInverterType solver_type
int make_resident_solution