QUDA  0.9.0
Classes | Namespaces | Macros | Functions | Variables
interface_quda.cpp File Reference
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <sys/time.h>
#include <quda.h>
#include <quda_fortran.h>
#include <quda_internal.h>
#include <comm_quda.h>
#include <tune_quda.h>
#include <blas_quda.h>
#include <gauge_field.h>
#include <dirac_quda.h>
#include <ritz_quda.h>
#include <dslash_quda.h>
#include <invert_quda.h>
#include <lanczos_quda.h>
#include <color_spinor_field.h>
#include <eig_variables.h>
#include <clover_field.h>
#include <llfat_quda.h>
#include <unitarization_links.h>
#include <algorithm>
#include <staggered_oprod.h>
#include <ks_improved_force.h>
#include <ks_force_quda.h>
#include <random_quda.h>
#include <multigrid.h>
#include <deflation.h>
#include <cuda.h>
#include <gauge_update_quda.h>
#include "check_params.h"
#include <gauge_tools.h>
#include <contractQuda.h>
#include <momentum.h>
#include <blas_magma.h>
Include dependency graph for interface_quda.cpp:

Go to the source code of this file.

Classes

struct  LexMapData
 

Namespaces

 quda
 

Macros

#define MAX(a, b)   ((a)>(b)? (a):(b))
 
#define TDIFF(a, b)   (b.tv_sec - a.tv_sec + 0.000001*(b.tv_usec - a.tv_usec))
 
#define spinorSiteSize   24
 
#define MAX_GPU_NUM_PER_NODE   16
 
#define INIT_PARAM
 
#define CHECK_PARAM
 
#define PRINT_PARAM
 
#define QUDA_MAX_CHRONO   2
 
#define STR_(x)   #x
 
#define STR(x)   STR_(x)
 
#define REFINE_INCREASING_MASS
 

Functions

void openMagma ()
 
void closeMagma ()
 
std::vector< std::vector< std::pair< ColorSpinorField *, ColorSpinorField * > > > chronoResident (QUDA_MAX_CHRONO)
 
void quda::printLaunchTimer ()
 
void setVerbosityQuda (QudaVerbosity verbosity, const char prefix[], FILE *outfile)
 
static int lex_rank_from_coords (const int *coords, void *fdata)
 
void initCommsGridQuda (int nDim, const int *dims, QudaCommsMap func, void *fdata)
 
static void init_default_comms ()
 
void initQudaDevice (int dev)
 
void initQudaMemory ()
 
void updateR ()
 update the radius for halos. More...
 
void initQuda (int dev)
 
static cudaGaugeFieldcreateExtendedGauge (cudaGaugeField &in, const int *R, TimeProfile &profile, bool redundant_comms=false, QudaReconstructType recon=QUDA_RECONSTRUCT_INVALID)
 
void loadGaugeQuda (void *h_gauge, QudaGaugeParam *param)
 
void saveGaugeQuda (void *h_gauge, QudaGaugeParam *param)
 
void loadSloppyCloverQuda (QudaPrecision prec_sloppy, QudaPrecision prec_precondition)
 
void freeSloppyCloverQuda ()
 
void loadCloverQuda (void *h_clover, void *h_clovinv, QudaInvertParam *inv_param)
 
void freeGaugeQuda (void)
 
void freeSloppyGaugeQuda (void)
 
void loadSloppyGaugeQuda (QudaPrecision prec_sloppy, QudaPrecision prec_precondition)
 
void freeCloverQuda (void)
 
void flushChronoQuda (int i)
 Flush the chronological history for the given index. More...
 
void endQuda (void)
 
void quda::setDiracParam (DiracParam &diracParam, QudaInvertParam *inv_param, bool pc)
 
void quda::setDiracSloppyParam (DiracParam &diracParam, QudaInvertParam *inv_param, bool pc)
 
void quda::setDiracPreParam (DiracParam &diracParam, QudaInvertParam *inv_param, const bool pc, bool comms)
 
void quda::createDirac (Dirac *&d, Dirac *&dSloppy, Dirac *&dPre, QudaInvertParam &param, const bool pc_solve)
 
void quda::massRescale (cudaColorSpinorField &b, QudaInvertParam &param)
 
void dslashQuda (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity)
 
void dslashQuda_4dpc (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity, int test_type)
 
void dslashQuda_mdwf (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity, int test_type)
 
void MatQuda (void *h_out, void *h_in, QudaInvertParam *inv_param)
 
void MatDagMatQuda (void *h_out, void *h_in, QudaInvertParam *inv_param)
 
bool quda::canReuseResidentGauge (QudaInvertParam *inv_param)
 
void checkClover (QudaInvertParam *param)
 
quda::cudaGaugeFieldcheckGauge (QudaInvertParam *param)
 
void cloverQuda (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity, int inverse)
 
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 * newMultigridQuda (QudaMultigridParam *mg_param)
 
void destroyMultigridQuda (void *mg)
 Free resources allocated by the multigrid solver. More...
 
void updateMultigridQuda (void *mg_, QudaMultigridParam *mg_param)
 Updates the multigrid preconditioner for the new gauge / clover field. More...
 
void * newDeflationQuda (QudaEigParam *eig_param)
 
void destroyDeflationQuda (void *df)
 
void invertQuda (void *hp_x, void *hp_b, QudaInvertParam *param)
 
void invertMultiSrcQuda (void **_hp_x, void **_hp_b, QudaInvertParam *param)
 
void invertMultiShiftQuda (void **_hp_x, void *_hp_b, QudaInvertParam *param)
 
void computeKSLinkQuda (void *fatlink, void *longlink, void *ulink, void *inlink, double *path_coeff, QudaGaugeParam *param)
 
int getGaugePadding (GaugeFieldParam &param)
 
int computeGaugeForceQuda (void *mom, void *siteLink, int ***input_path_buf, int *path_length, double *loop_coeff, int num_paths, int max_length, double eb3, QudaGaugeParam *qudaGaugeParam)
 
void createCloverQuda (QudaInvertParam *invertParam)
 
void * createGaugeFieldQuda (void *gauge, int geometry, QudaGaugeParam *param)
 
void saveGaugeFieldQuda (void *gauge, void *inGauge, QudaGaugeParam *param)
 
void destroyGaugeFieldQuda (void *gauge)
 
void computeStaggeredForceQuda (void *h_mom, double dt, double delta, void *h_force, void **x, QudaGaugeParam *gauge_param, QudaInvertParam *inv_param)
 
void computeHISQForceQuda (void *const milc_momentum, long long *flops, 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 **fermion, int num_terms, int num_naik_terms, double **coeff, QudaGaugeParam *gParam)
 
void computeCloverForceQuda (void *h_mom, double dt, void **h_x, void **h_p, double *coeff, double kappa2, double ck, int nvector, double multiplicity, void *gauge, QudaGaugeParam *gauge_param, QudaInvertParam *inv_param)
 
void updateGaugeFieldQuda (void *gauge, void *momentum, double dt, int conj_mom, int exact, QudaGaugeParam *param)
 
void projectSU3Quda (void *gauge_h, double tol, QudaGaugeParam *param)
 
void staggeredPhaseQuda (void *gauge_h, QudaGaugeParam *param)
 
double momActionQuda (void *momentum, QudaGaugeParam *param)
 
void init_quda_ (int *dev)
 
void init_quda_device_ (int *dev)
 
void init_quda_memory_ ()
 
void end_quda_ ()
 
void load_gauge_quda_ (void *h_gauge, QudaGaugeParam *param)
 
void free_gauge_quda_ ()
 
void free_sloppy_gauge_quda_ ()
 
void load_clover_quda_ (void *h_clover, void *h_clovinv, QudaInvertParam *inv_param)
 
void free_clover_quda_ (void)
 
void dslash_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity *parity)
 
void clover_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity *parity, int *inverse)
 
void mat_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param)
 
void mat_dag_mat_quda_ (void *h_out, void *h_in, QudaInvertParam *inv_param)
 
void invert_quda_ (void *hp_x, void *hp_b, QudaInvertParam *param)
 
void invert_multishift_quda_ (void *h_x, void *hp_b, QudaInvertParam *param)
 
void flush_chrono_quda_ (int *index)
 Flush the chronological history for the given index. More...
 
void register_pinned_quda_ (void *ptr, size_t *bytes)
 Pinned a pre-existing memory allocation. More...
 
void unregister_pinned_quda_ (void *ptr)
 Pinned a pre-existing memory allocation. More...
 
void new_quda_gauge_param_ (QudaGaugeParam *param)
 
void new_quda_invert_param_ (QudaInvertParam *param)
 
void update_gauge_field_quda_ (void *gauge, void *momentum, double *dt, bool *conj_mom, bool *exact, QudaGaugeParam *param)
 
static int opp (int dir)
 
static void createGaugeForcePaths (int **paths, int dir, int num_loop_types)
 
void compute_gauge_force_quda_ (void *mom, void *gauge, int *num_loop_types, double *coeff, double *dt, QudaGaugeParam *param)
 Compute the gauge force and update the mometum field. More...
 
void compute_staggered_force_quda_ (void *h_mom, double *dt, double *delta, void *gauge, void *x, QudaGaugeParam *gauge_param, QudaInvertParam *inv_param)
 
void apply_staggered_phase_quda_ ()
 Apply the staggered phase factors to the resident gauge field. More...
 
void remove_staggered_phase_quda_ ()
 Remove the staggered phase factors to the resident gauge field. More...
 
void kinetic_quda_ (double *kin, void *momentum, QudaGaugeParam *param)
 Evaluate the kinetic (momentum) contribution to classical Hamiltonian for Hybrid Monte Carlo. More...
 
void comm_set_gridsize_ (int *grid)
 
void set_kernel_pack_t_ (int *pack)
 fTemporary function exposed for TIFR benchmarking More...
 
void gaussGaugeQuda (long seed)
 
void plaq_quda_ (double plaq[3])
 
void plaqQuda (double plq[3])
 
void performWuppertalnStep (void *h_out, void *h_in, QudaInvertParam *inv_param, unsigned int nSteps, double alpha)
 
void performAPEnStep (unsigned int nSteps, double alpha)
 
void performSTOUTnStep (unsigned int nSteps, double rho)
 
void performOvrImpSTOUTnStep (unsigned int nSteps, double rho, double epsilon)
 
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. More...
 
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. More...
 
void contract (const cudaColorSpinorField x, const cudaColorSpinorField y, void *ctrn, const QudaContractType cType)
 
void contract (const cudaColorSpinorField x, const cudaColorSpinorField y, void *ctrn, const QudaContractType cType, const int tC)
 
double qChargeCuda ()
 

Variables

static int R [4] = {0, 0, 0, 0}
 
static bool redundant_comms = false
 
static bool InitMagma = false
 
cudaGaugeFieldgaugePrecise = NULL
 
cudaGaugeFieldgaugeSloppy = NULL
 
cudaGaugeFieldgaugePrecondition = NULL
 
cudaGaugeFieldgaugeExtended = NULL
 
cudaGaugeField *& gaugeFatPrecise = gaugePrecise
 
cudaGaugeField *& gaugeFatSloppy = gaugeSloppy
 
cudaGaugeField *& gaugeFatPrecondition = gaugePrecondition
 
cudaGaugeField *& gaugeFatExtended = gaugeExtended
 
cudaGaugeFieldgaugeLongExtended = NULL
 
cudaGaugeFieldgaugeLongPrecise = NULL
 
cudaGaugeFieldgaugeLongSloppy = NULL
 
cudaGaugeFieldgaugeLongPrecondition = NULL
 
cudaGaugeFieldgaugeSmeared = NULL
 
cudaCloverFieldcloverPrecise = NULL
 
cudaCloverFieldcloverSloppy = NULL
 
cudaCloverFieldcloverPrecondition = NULL
 
cudaGaugeFieldmomResident = NULL
 
cudaGaugeFieldextendedGaugeResident = NULL
 
std::vector< cudaColorSpinorField * > solutionResident
 
static intnum_failures_h = NULL
 
static intnum_failures_d = NULL
 
cudaDeviceProp deviceProp
 
cudaStream_t * streams
 
static bool initialized = false
 Profiler for initQuda. More...
 
static TimeProfile profileInit ("initQuda")
 Profile for loadGaugeQuda / saveGaugeQuda. More...
 
static TimeProfile profileGauge ("loadGaugeQuda")
 Profile for loadCloverQuda. More...
 
static TimeProfile profileClover ("loadCloverQuda")
 Profiler for dslashQuda. More...
 
static TimeProfile profileDslash ("dslashQuda")
 Profiler for invertQuda. More...
 
static TimeProfile profileInvert ("invertQuda")
 Profiler for invertMultiShiftQuda. More...
 
static TimeProfile profileMulti ("invertMultiShiftQuda")
 Profiler for computeFatLinkQuda. More...
 
static TimeProfile profileFatLink ("computeKSLinkQuda")
 Profiler for computeGaugeForceQuda. More...
 
static TimeProfile profileGaugeForce ("computeGaugeForceQuda")
 Profiler for updateGaugeFieldQuda. More...
 
static TimeProfile profileGaugeUpdate ("updateGaugeFieldQuda")
 Profiler for createExtendedGaugeField. More...
 
static TimeProfile profileExtendedGauge ("createExtendedGaugeField")
 Profiler for computeCloverForceQuda. More...
 
static TimeProfile profileCloverForce ("computeCloverForceQuda")
 Profiler for computeStaggeredForceQuda. More...
 
static TimeProfile profileStaggeredForce ("computeStaggeredForceQuda")
 Profiler for computeHISQForceQuda. More...
 
static TimeProfile profileHISQForce ("computeHISQForceQuda")
 Profiler for plaqQuda. More...
 
static TimeProfile profilePlaq ("plaqQuda")
 Profiler for wuppertalQuda. More...
 
static TimeProfile profileWuppertal ("wuppertalQuda")
 Profiler for gaussQuda. More...
 
static TimeProfile profileGauss ("gaussQuda")
 Profiler for plaqQuda. More...
 
static TimeProfile profileQCharge ("qChargeQuda")
 Profiler for APEQuda. More...
 
static TimeProfile profileAPE ("APEQuda")
 Profiler for STOUTQuda. More...
 
static TimeProfile profileSTOUT ("STOUTQuda")
 Profiler for OvrImpSTOUTQuda. More...
 
static TimeProfile profileOvrImpSTOUT ("OvrImpSTOUTQuda")
 Profiler for projectSU3Quda. More...
 
static TimeProfile profileProject ("projectSU3Quda")
 Profiler for staggeredPhaseQuda. More...
 
static TimeProfile profilePhase ("staggeredPhaseQuda")
 Profiler for contractions. More...
 
static TimeProfile profileContract ("contractQuda")
 Profiler for contractions. More...
 
static TimeProfile profileCovDev ("covDevQuda")
 Profiler for contractions. More...
 
static TimeProfile profileMomAction ("momActionQuda")
 Profiler for endQuda. More...
 
static TimeProfile profileEnd ("endQuda")
 Profiler for GaugeFixing. More...
 
static TimeProfile GaugeFixFFTQuda ("GaugeFixFFTQuda")
 
static TimeProfile GaugeFixOVRQuda ("GaugeFixOVRQuda")
 Profiler for toal time spend between init and end. More...
 
static TimeProfile profileInit2End ("initQuda-endQuda", false)
 
static bool comms_initialized = false
 
static const std::string quda_version = STR(QUDA_VERSION_MAJOR) "." STR(QUDA_VERSION_MINOR) "." STR(QUDA_VERSION_SUBMINOR)
 
char * gitversion
 
static bool invalidate_clover = true
 
static double quda::unscaled_shifts [QUDA_MAX_MULTI_SHIFT]
 

Macro Definition Documentation

◆ CHECK_PARAM

#define CHECK_PARAM

Definition at line 66 of file interface_quda.cpp.

◆ INIT_PARAM

#define INIT_PARAM

Definition at line 61 of file interface_quda.cpp.

◆ MAX

#define MAX (   a,
  b 
)    ((a)>(b)? (a):(b))

Definition at line 53 of file interface_quda.cpp.

◆ MAX_GPU_NUM_PER_NODE

#define MAX_GPU_NUM_PER_NODE   16

Definition at line 58 of file interface_quda.cpp.

◆ PRINT_PARAM

#define PRINT_PARAM

Definition at line 71 of file interface_quda.cpp.

◆ QUDA_MAX_CHRONO

#define QUDA_MAX_CHRONO   2

Definition at line 144 of file interface_quda.cpp.

Referenced by endQuda(), flushChronoQuda(), and invertQuda().

◆ REFINE_INCREASING_MASS

#define REFINE_INCREASING_MASS

◆ spinorSiteSize

#define spinorSiteSize   24

◆ STR

#define STR (   x)    STR_(x)

Definition at line 355 of file interface_quda.cpp.

◆ STR_

#define STR_ (   x)    #x

Definition at line 354 of file interface_quda.cpp.

◆ TDIFF

#define TDIFF (   a,
  b 
)    (b.tv_sec - a.tv_sec + 0.000001*(b.tv_usec - a.tv_usec))

Definition at line 54 of file interface_quda.cpp.

Function Documentation

◆ apply_staggered_phase_quda_()

void apply_staggered_phase_quda_ ( )

Apply the staggered phase factors to the resident gauge field.

Definition at line 4901 of file interface_quda.cpp.

References quda::GaugeField::applyStaggeredPhase(), errorQuda, gaugePrecise, getVerbosity(), printfQuda, and QUDA_VERBOSE.

Here is the call graph for this function:

◆ checkClover()

void checkClover ( QudaInvertParam param)

◆ checkGauge()

quda::cudaGaugeField* checkGauge ( QudaInvertParam param)

◆ chronoResident()

std::vector< std::vector< std::pair<ColorSpinorField*,ColorSpinorField*> > > chronoResident ( QUDA_MAX_CHRONO  )

Referenced by flushChronoQuda(), and invertQuda().

Here is the caller graph for this function:

◆ closeMagma()

void closeMagma ( )

Definition at line 103 of file interface_quda.cpp.

References CloseMagma(), InitMagma, and printfQuda.

Referenced by destroyDeflationQuda().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clover_quda_()

void clover_quda_ ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param,
QudaParity parity,
int inverse 
)

Apply the clover operator or its inverse.

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage
parityThe source and destination parity of the field
inverseWhether to apply the inverse of the clover term

Definition at line 4730 of file interface_quda.cpp.

References cloverQuda(), inv_param, and parity.

Here is the call graph for this function:

◆ cloverQuda()

void cloverQuda ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param,
QudaParity  parity,
int  inverse 
)

◆ comm_set_gridsize_()

void comm_set_gridsize_ ( int grid)

BQCD wants a node mapping with x varying fastest.

Definition at line 4943 of file interface_quda.cpp.

References initCommsGridQuda().

Here is the call graph for this function:

◆ compute_gauge_force_quda_()

void compute_gauge_force_quda_ ( void *  mom,
void *  gauge,
int num_loop_types,
double coeff,
double dt,
QudaGaugeParam param 
)

Compute the gauge force and update the mometum field.

Parameters
[in,out]momThe momentum field to be updated
[in]gaugeThe gauge field from which we compute the force
[in]num_loop_typesNumber of loop types in the gauge action
[in]loop_coeffCoefficients of the different loops in the Symanzik action
[in]dtThe integration step size
[in]paramThe parameters of the external fields and the computation settings

Definition at line 4840 of file interface_quda.cpp.

References dw_dslash_4D_cuda_gen::coeff(), computeGaugeForceQuda(), createGaugeForcePaths(), errorQuda, host_free, fused_exterior_ndeg_tm_dslash_cuda_gen::i, param, and safe_malloc.

Here is the call graph for this function:

◆ compute_staggered_force_quda_()

void compute_staggered_force_quda_ ( void *  mom,
double dt,
double delta,
void *  gauge,
void *  x,
QudaGaugeParam gauge_param,
QudaInvertParam invert_param 
)

Compute the naive staggered force. All fields must be in the same precision.

Parameters
momMomentum field
dtIntegrating step size
deltaAdditional scale factor when updating momentum (mom += delta * [force]_TA
gaugeGauge field (at present only supports resident gauge field)
xArray of single-parity solution vectors (at present only supports resident solutions)
gauge_paramGauge field meta data
invert_paramDirac and solver meta data

Definition at line 4896 of file interface_quda.cpp.

References computeStaggeredForceQuda(), delta, gauge_param, inv_param, and x.

Here is the call graph for this function:

◆ computeCloverForceQuda()

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 
)

Compute the clover force contributions in each dimension mu given the array of solution fields, and compute the resulting momentum field.

Parameters
momForce matrix
dtIntegrating step size
xArray of solution vectors
pArray of intermediate vectors
coeffArray of residues for each contribution (multiplied by stepsize)
kappa2-kappa*kappa parameter
ck-clover_coefficient * kappa / 8
nvecNumber of vectors
multiplicityNumber fermions this bilinear reresents
gaugeGauge Field
gauge_paramGauge field meta data
inv_paramDirac and solver meta data

Definition at line 4254 of file interface_quda.cpp.

References checkCudaError, quda::cloverDerivative(), cloverPrecise, dw_dslash_4D_cuda_gen::coeff(), quda::computeCloverForce(), quda::computeCloverSigmaOprod(), quda::computeCloverSigmaTrace(), quda::copy(), cpuMom, quda::GaugeFieldParam::create, quda::ColorSpinorParam::create, quda::Dirac::create(), quda::ColorSpinorField::Create(), createExtendedGauge(), cudaForce, cudaMom, quda::Dirac::Dagger(), dirac, quda::GaugeCovDev::Dslash(), errorQuda, extendedGaugeResident, quda::ColorSpinorParam::fieldOrder, for(), quda::gamma5(), quda::ColorSpinorParam::gammaBasis, QudaGaugeParam_s::gauge_order, gauge_param, gaugePrecise, quda::GaugeFieldParam::geometry, fused_exterior_ndeg_tm_dslash_cuda_gen::i, int, inv_param, quda::GaugeFieldParam::link_type, quda::ColorSpinorParam::location, quda::GaugeCovDev::M(), quda::ColorSpinorParam::nColor, quda::LatticeFieldParam::nDim, quda::ColorSpinorParam::nSpin, quda::GaugeFieldParam::order, p, quda::LatticeFieldParam::pad, param, quda::LatticeFieldParam::precision, quda::LatticeField::Precision(), profileCloverForce, QUDA_ASQTAD_MOM_LINKS, QUDA_CUDA_FIELD_LOCATION, QUDA_DAG_NO, QUDA_DAG_YES, QUDA_DEGRAND_ROSSI_GAMMA_BASIS, QUDA_DIRECT_PC_SOLVE, QUDA_DOUBLE_PRECISION, QUDA_EVEN_ODD_SITE_ORDER, QUDA_EVEN_PARITY, QUDA_FLOAT2_FIELD_ORDER, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FULL_SITE_SUBSET, QUDA_GENERAL_LINKS, QUDA_NORMOP_PC_SOLVE, QUDA_NULL_FIELD_CREATE, QUDA_ODD_PARITY, QUDA_PARITY_SITE_SUBSET, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_10, QUDA_RECONSTRUCT_12, QUDA_RECONSTRUCT_NO, QUDA_REFERENCE_FIELD_CREATE, QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, QUDA_TENSOR_GEOMETRY, QUDA_UKQCD_GAMMA_BASIS, QUDA_ZERO_FIELD_CREATE, R, quda::GaugeFieldParam::reconstruct, QudaGaugeParam_s::reconstruct, quda::GaugeField::Reconstruct(), quda::cudaGaugeField::saveCPUField(), quda::setDiracParam(), shift, quda::ColorSpinorParam::siteOrder, quda::LatticeFieldParam::siteSubset, solutionResident, QudaInvertParam_s::solve_type, tmp, quda::DiracParam::tmp1, quda::updateMomentum(), QudaInvertParam_s::use_resident_solution, quda::ColorSpinorParam::v, quda::LatticeFieldParam::x, and x.

Here is the call graph for this function:

◆ computeGaugeFixingFFTQuda()

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.

Parameters
[in,out]gauge,gaugefield to be fixed
[in]gauge_dir,3for Coulomb gauge fixing, other for Landau gauge fixing
[in]Nsteps,maximumnumber of steps to perform gauge fixing
[in]verbose_interval,printgauge fixing info when iteration count is a multiple of this
[in]alpha,gaugefixing parameter of the method, most common value is 0.08
[in]autotune,1to autotune the method, i.e., if the Fg inverts its tendency we decrease the alpha value
[in]tolerance,torelancevalue to stop the method, if this value is zero then the method stops when iteration reachs the maximum number of steps defined by Nsteps
[in]stopWtheta,0for MILC criterium and 1 to use the theta value
[in]paramThe parameters of the external fields and the computation settings
[out]timeinfo

Definition at line 5287 of file interface_quda.cpp.

References checkCudaError, cpuGauge, quda::GaugeFieldParam::create, GaugeFixFFTQuda, quda::gaugefixingFFT(), gaugePrecise, gParam, quda::TimeProfile::Last(), quda::GaugeFieldParam::link_type, quda::cudaGaugeField::loadCPUField(), QudaGaugeParam_s::make_resident_gauge, quda::GaugeFieldParam::order, param, quda::LatticeFieldParam::precision, QUDA_DOUBLE_PRECISION, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FLOAT4_GAUGE_ORDER, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_NO, quda::GaugeFieldParam::reconstruct, QudaGaugeParam_s::reconstruct, quda::cudaGaugeField::saveCPUField(), and QudaGaugeParam_s::type.

Here is the call graph for this function:

◆ computeGaugeFixingOVRQuda()

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.

Parameters
[in,out]gauge,gaugefield to be fixed
[in]gauge_dir,3for Coulomb gauge fixing, other for Landau gauge fixing
[in]Nsteps,maximumnumber of steps to perform gauge fixing
[in]verbose_interval,printgauge fixing info when iteration count is a multiple of this
[in]relax_boost,gaugefixing parameter of the overrelaxation method, most common value is 1.5 or 1.7.
[in]tolerance,torelancevalue to stop the method, if this value is zero then the method stops when iteration reachs the maximum number of steps defined by Nsteps
[in]reunit_interval,reunitarizegauge field when iteration count is a multiple of this
[in]stopWtheta,0for MILC criterium and 1 to use the theta value
[in]paramThe parameters of the external fields and the computation settings
[out]timeinfo

if (!param->use_resident_gauge) { // load fields onto the device

Definition at line 5202 of file interface_quda.cpp.

References checkCudaError, comm_size(), quda::copyExtendedGauge(), cpuGauge, quda::GaugeFieldParam::create, createExtendedGauge(), quda::gaugefixingOVR(), GaugeFixOVRQuda, gaugePrecise, gParam, quda::TimeProfile::Last(), quda::GaugeFieldParam::link_type, quda::cudaGaugeField::loadCPUField(), QudaGaugeParam_s::make_resident_gauge, quda::GaugeFieldParam::order, param, quda::LatticeFieldParam::precision, QUDA_CUDA_FIELD_LOCATION, QUDA_DOUBLE_PRECISION, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FLOAT4_GAUGE_ORDER, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_NO, R, quda::GaugeFieldParam::reconstruct, QudaGaugeParam_s::reconstruct, quda::cudaGaugeField::saveCPUField(), and QudaGaugeParam_s::type.

Here is the call graph for this function:

◆ computeGaugeForceQuda()

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 
)

Compute the gauge force and update the mometum field

Parameters
momThe momentum field to be updated
sitelinkThe gauge field from which we compute the force
input_path_buf[dim][num_paths][path_length]
path_lengthOne less that the number of links in a loop (e.g., 3 for a staple)
loop_coeffCoefficients of the different loops in the Symanzik action
num_pathsHow many contributions from path_length different "staples"
max_lengthThe maximum number of non-zero of links in any path in the action
dtThe integration step size (for MILC this is dt*beta/3)
paramThe parameters of the external fields and the computation settings

Definition at line 3663 of file interface_quda.cpp.

References checkCudaError, cpuMom, quda::GaugeFieldParam::create, createExtendedGauge(), QudaGaugeParam_s::cuda_prec, cudaGauge, cudaMom, errorQuda, extendedGaugeResident, QudaGaugeParam_s::gauge_offset, quda::gaugeForce(), gaugePrecise, gParam, quda::GaugeFieldParam::link_type, quda::cudaGaugeField::loadCPUField(), QudaGaugeParam_s::make_resident_gauge, QudaGaugeParam_s::make_resident_mom, QudaGaugeParam_s::mom_offset, momResident, quda::GaugeFieldParam::order, QudaGaugeParam_s::overwrite_mom, quda::LatticeFieldParam::precision, profileGaugeForce, QUDA_ASQTAD_MOM_LINKS, QUDA_DOUBLE_PRECISION, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FLOAT4_GAUGE_ORDER, QUDA_MILC_GAUGE_ORDER, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_QDP_GAUGE_ORDER, QUDA_RECONSTRUCT_10, QUDA_RECONSTRUCT_NO, QUDA_TIFR_GAUGE_ORDER, QUDA_TIFR_PADDED_GAUGE_ORDER, QUDA_ZERO_FIELD_CREATE, qudaGaugeParam, R, quda::GaugeFieldParam::reconstruct, QudaGaugeParam_s::reconstruct, QudaGaugeParam_s::return_result_mom, quda::cudaGaugeField::saveCPUField(), quda::GaugeFieldParam::site_offset, quda::GaugeFieldParam::site_size, QudaGaugeParam_s::site_size, QudaGaugeParam_s::use_resident_gauge, QudaGaugeParam_s::use_resident_mom, and quda::cudaGaugeField::zero().

Referenced by compute_gauge_force_quda_(), and gauge_force_test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeHISQForceQuda()

void computeHISQForceQuda ( void *  momentum,
long long *  flops,
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 
)

Compute the fermion force for the HISQ quark action.

Parameters
momentumThe momentum contribution from the quark action.
level2_coeffThe coefficients for the second level of smearing in the quark action.
fat7_coeffThe coefficients for the first level of smearing (fat7) in the quark action.
w_linkUnitarized link variables obtained by applying fat7 smearing and unitarization to the original links.
v_linkFat7 link variables.
u_linkSU(3) think link variables.
quarkThe input fermion field.
numThe number of quark fields
num_naikThe number of naik contributions
coeffThe coefficient multiplying the fermion fields in the outer product
param.The field parameters.

Definition at line 4004 of file interface_quda.cpp.

References quda::ax(), quda::GaugeField::Bytes(), dw_dslash_4D_cuda_gen::coeff(), comm_dim_partitioned(), quda::computeStaggeredOprod(), quda::cudaGaugeField::copy(), quda::copyExtendedGauge(), cpuMom, cpuULink, quda::GaugeFieldParam::create, quda::ColorSpinorParam::create, cudaGauge, cudaMom, e, errorQuda, quda::cudaGaugeField::exchangeExtendedGhost(), quda::ColorSpinorParam::fieldOrder, quda::blas::flops, quda::cudaGaugeField::Gauge_p(), gParam, quda::fermion_force::hisqCompleteForce(), quda::fermion_force::hisqLongLinkForce(), quda::fermion_force::hisqStaplesForce(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, quda::cudaGaugeField::loadCPUField(), momResident, quda::ColorSpinorParam::nColor, quda::LatticeFieldParam::nDim, quda::GaugeFieldParam::nFace, quda::ColorSpinorParam::nSpin, num_failures_d, num_failures_h, quda::GaugeFieldParam::order, quda::LatticeFieldParam::pad, param, quda::LatticeFieldParam::precision, profileHISQForce, QUDA_ASQTAD_MOM_LINKS, QUDA_CUDA_FIELD_LOCATION, QUDA_EVEN_ODD_SITE_ORDER, QUDA_FLOAT2_FIELD_ORDER, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FULL_SITE_SUBSET, QUDA_GENERAL_LINKS, QUDA_GHOST_EXCHANGE_EXTENDED, QUDA_GHOST_EXCHANGE_NO, QUDA_MILC_GAUGE_ORDER, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_10, QUDA_RECONSTRUCT_NO, QUDA_REFERENCE_FIELD_CREATE, QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, QUDA_ZERO_FIELD_CREATE, R, QudaGaugeParam_s::reconstruct, quda::cudaGaugeField::saveCPUField(), quda::fermion_force::setUnitarizeForceConstants(), quda::ColorSpinorParam::siteOrder, quda::LatticeFieldParam::siteSubset, unitarize_eps, quda::fermion_force::unitarizeForce(), quda::updateMomentum(), quda::ColorSpinorParam::v, and quda::LatticeFieldParam::x.

Here is the call graph for this function:

◆ computeKSLinkQuda()

void computeKSLinkQuda ( void *  fatlink,
void *  longlink,
void *  ulink,
void *  inlink,
double path_coeff,
QudaGaugeParam param 
)

◆ computeStaggeredForceQuda()

void computeStaggeredForceQuda ( void *  h_mom,
double  dt,
double  delta,
void *  h_force,
void **  x,
QudaGaugeParam gauge_param,
QudaInvertParam inv_param 
)

Definition at line 3855 of file interface_quda.cpp.

References quda::applyU(), checkCudaError, dw_dslash_4D_cuda_gen::coeff(), quda::computeStaggeredOprod(), cpuForce, cpuMom, quda::GaugeFieldParam::create, quda::ColorSpinorParam::create, quda::Dirac::create(), quda::ColorSpinorField::Create(), cudaForce, cudaMom, delta, dirac, quda::GaugeCovDev::Dslash(), errorQuda, quda::ColorSpinorParam::fieldOrder, quda::ColorSpinorParam::gammaBasis, quda::GaugeFieldParam::gauge, gauge_param, gaugePrecise, gParam, fused_exterior_ndeg_tm_dslash_cuda_gen::i, int, inv_param, quda::GaugeFieldParam::link_type, quda::cudaGaugeField::loadCPUField(), quda::ColorSpinorParam::location, QudaGaugeParam_s::make_resident_mom, momResident, quda::ColorSpinorParam::nColor, quda::LatticeFieldParam::nDim, quda::ColorSpinorParam::nSpin, QudaInvertParam_s::num_offset, quda::GaugeFieldParam::order, quda::LatticeFieldParam::pad, quda::LatticeFieldParam::precision, profileStaggeredForce, QUDA_ASQTAD_MOM_LINKS, QUDA_CUDA_FIELD_LOCATION, QUDA_DEGRAND_ROSSI_GAMMA_BASIS, QUDA_EVEN_ODD_SITE_ORDER, QUDA_FLOAT2_FIELD_ORDER, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FULL_SITE_SUBSET, QUDA_GENERAL_LINKS, QUDA_NORMOP_PC_SOLVE, QUDA_NULL_FIELD_CREATE, QUDA_ODD_PARITY, QUDA_PERIODIC_T, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_10, QUDA_RECONSTRUCT_NO, QUDA_ZERO_FIELD_CREATE, quda::qudaDeviceSynchronize(), quda::GaugeFieldParam::reconstruct, QudaGaugeParam_s::reconstruct, QudaInvertParam_s::residue, QudaGaugeParam_s::return_result_mom, quda::cudaGaugeField::saveCPUField(), quda::setDiracParam(), quda::ColorSpinorParam::siteOrder, quda::LatticeFieldParam::siteSubset, solutionResident, quda::GaugeFieldParam::t_boundary, quda::updateMomentum(), QudaGaugeParam_s::use_resident_gauge, QudaGaugeParam_s::use_resident_mom, QudaInvertParam_s::use_resident_solution, quda::LatticeFieldParam::x, X, and x.

Referenced by compute_staggered_force_quda_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ contract() [1/2]

void contract ( const cudaColorSpinorField  x,
const cudaColorSpinorField  y,
void *  ctrn,
const QudaContractType  cType 
)

Compute a volume or time-slice contraction of two spinors.

Parameters
xSpinor to contract. This is conjugated before contraction.
ySpinor to contract.
ctrnContraction output. The size must be Volume*16
cTypeContraction type, allows for volume or time-slice contractions.
tCTime-slice to contract in case the contraction is in a single time-slice.

Definition at line 5369 of file interface_quda.cpp.

References quda::contractCuda(), errorQuda, profileContract, QUDA_DOUBLE_PRECISION, QUDA_EVEN_PARITY, QUDA_ODD_PARITY, QUDA_SINGLE_PRECISION, x, and y.

Referenced by quda::contractCuda().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ contract() [2/2]

void contract ( const cudaColorSpinorField  x,
const cudaColorSpinorField  y,
void *  ctrn,
const QudaContractType  cType,
const int  tC 
)

Definition at line 5382 of file interface_quda.cpp.

References quda::contractCuda(), errorQuda, profileContract, QUDA_DOUBLE_PRECISION, QUDA_EVEN_PARITY, QUDA_ODD_PARITY, QUDA_SINGLE_PRECISION, x, and y.

Here is the call graph for this function:

◆ createCloverQuda()

void createCloverQuda ( QudaInvertParam param)

◆ createExtendedGauge()

static cudaGaugeField* createExtendedGauge ( cudaGaugeField in,
const int R,
TimeProfile profile,
bool  redundant_comms = false,
QudaReconstructType  recon = QUDA_RECONSTRUCT_INVALID 
)
static

◆ createGaugeFieldQuda()

void* createGaugeFieldQuda ( void *  gauge,
int  geometry,
QudaGaugeParam param 
)

Allocate a gauge (matrix) field on the device and optionally download a host gauge field.

Parameters
gaugeThe host gauge field (optional - if set to 0 then the gauge field zeroed)
geometryThe geometry of the matrix field to create (1 - scalar, 4 - vector, 6 - tensor)
paramThe parameters of the external field and the field to be created
Returns
Pointer to the gauge field (cast as a void*)

Definition at line 3813 of file interface_quda.cpp.

References cpuGauge, quda::GaugeFieldParam::create, cudaGauge, errorQuda, quda::GaugeFieldParam::geometry, gParam, quda::cudaGaugeField::loadCPUField(), quda::GaugeFieldParam::order, param, QUDA_FLOAT2_GAUGE_ORDER, QUDA_GENERAL_LINKS, QUDA_SCALAR_GEOMETRY, QUDA_VECTOR_GEOMETRY, and QUDA_ZERO_FIELD_CREATE.

Here is the call graph for this function:

◆ createGaugeForcePaths()

static void createGaugeForcePaths ( int **  paths,
int  dir,
int  num_loop_types 
)
static

Definition at line 4792 of file interface_quda.cpp.

References fused_exterior_ndeg_tm_dslash_cuda_gen::i, index(), and opp().

Referenced by compute_gauge_force_quda_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ destroyDeflationQuda()

void destroyDeflationQuda ( void *  df_instance)

Free resources allocated by the deflated solver

Definition at line 2514 of file interface_quda.cpp.

References closeMagma().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ destroyGaugeFieldQuda()

void destroyGaugeFieldQuda ( void *  gauge)

Reinterpret gauge as a pointer to cudaGaugeField and call destructor.

Parameters
gaugeGauge field to be freed

Definition at line 3849 of file interface_quda.cpp.

◆ destroyMultigridQuda()

void destroyMultigridQuda ( void *  mg_instance)

Free resources allocated by the multigrid solver.

Parameters
mg_instancePointer to instance of multigrid_solver

Definition at line 2377 of file interface_quda.cpp.

Referenced by main().

Here is the caller graph for this function:

◆ dslash_quda_()

void dslash_quda_ ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param,
QudaParity parity 
)

Apply the Dslash operator (D_{eo} or D_{oe}).

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage
parityThe destination parity of the field

Definition at line 4728 of file interface_quda.cpp.

References dslashQuda(), inv_param, and parity.

Here is the call graph for this function:

◆ dslashQuda()

void dslashQuda ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param,
QudaParity  parity 
)

Apply the Dslash operator (D_{eo} or D_{oe}).

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage
parityThe destination parity of the field

Definition at line 1616 of file interface_quda.cpp.

References quda::GaugeField::Anisotropy(), quda::blas::ax(), cloverPrecise, quda::ColorSpinorParam::create, quda::Dirac::create(), quda::ColorSpinorField::Create(), QudaInvertParam_s::dagger, dirac, QudaInvertParam_s::dirac_order, quda::GaugeCovDev::Dslash(), QudaInvertParam_s::dslash_type, errorQuda, gaugePrecise, getVerbosity(), in, QudaInvertParam_s::input_location, inv_param, QudaInvertParam_s::mass, QudaInvertParam_s::mass_normalization, quda::blas::norm2(), out, QudaInvertParam_s::output_location, parity, popVerbosity(), printfQuda, printQudaInvertParam(), profileDslash, pushVerbosity(), QUDA_ASQTAD_DSLASH, QUDA_CLOVER_WILSON_DSLASH, QUDA_CPS_WILSON_DIRAC_ORDER, QUDA_DEBUG_VERBOSE, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_DOMAIN_WALL_DSLASH, QUDA_EVEN_PARITY, QUDA_KAPPA_NORMALIZATION, QUDA_MOBIUS_DWF_DSLASH, QUDA_NULL_FIELD_CREATE, QUDA_ODD_PARITY, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_STAGGERED_DSLASH, QUDA_TWISTED_CLOVER_DSLASH, quda::setDiracParam(), quda::setKernelPackT(), tmp1, QudaInvertParam_s::verbosity, and quda::LatticeField::X().

Referenced by dslash_quda_(), and dslashCUDA().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dslashQuda_4dpc()

void dslashQuda_4dpc ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param,
QudaParity  parity,
int  test_type 
)

Apply the Dslash operator (D_{eo} or D_{oe}) for 4D EO preconditioned DWF.

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage
parityThe destination parity of the field
test_typeChoose a type of dslash operators

Definition at line 1708 of file interface_quda.cpp.

References quda::GaugeField::Anisotropy(), quda::blas::ax(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), dirac, QudaInvertParam_s::dirac_order, QudaInvertParam_s::dslash_type, errorQuda, gaugePrecise, getVerbosity(), in, QudaInvertParam_s::input_location, inv_param, QudaInvertParam_s::kappa, quda::blas::norm2(), out, QudaInvertParam_s::output_location, parity, popVerbosity(), printfQuda, printQudaInvertParam(), pushVerbosity(), QUDA_CPS_WILSON_DIRAC_ORDER, QUDA_DEBUG_VERBOSE, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_EVEN_PARITY, QUDA_NULL_FIELD_CREATE, QUDA_ODD_PARITY, quda::setDiracParam(), quda::setKernelPackT(), test_type, QudaInvertParam_s::verbosity, and quda::LatticeField::X().

Referenced by dslashCUDA().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dslashQuda_mdwf()

void dslashQuda_mdwf ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param,
QudaParity  parity,
int  test_type 
)

Apply the Dslash operator (D_{eo} or D_{oe}) for Mobius DWF.

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage
parityThe destination parity of the field
test_typeChoose a type of dslash operators

Definition at line 1779 of file interface_quda.cpp.

References quda::GaugeField::Anisotropy(), quda::blas::ax(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), dirac, QudaInvertParam_s::dirac_order, QudaInvertParam_s::dslash_type, errorQuda, gaugePrecise, getVerbosity(), in, QudaInvertParam_s::input_location, inv_param, quda::blas::norm2(), out, QudaInvertParam_s::output_location, parity, popVerbosity(), printfQuda, printQudaInvertParam(), pushVerbosity(), QUDA_CPS_WILSON_DIRAC_ORDER, QUDA_DEBUG_VERBOSE, QUDA_EVEN_PARITY, QUDA_MOBIUS_DWF_DSLASH, QUDA_NULL_FIELD_CREATE, QUDA_ODD_PARITY, quda::setDiracParam(), quda::setKernelPackT(), test_type, QudaInvertParam_s::verbosity, and quda::LatticeField::X().

Referenced by dslashCUDA().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ end_quda_()

void end_quda_ ( void  )

Finalize the library.

Definition at line 4721 of file interface_quda.cpp.

References endQuda().

Here is the call graph for this function:

◆ endQuda()

void endQuda ( void  )

Finalize the library.

Definition at line 1290 of file interface_quda.cpp.

References quda::assertAllMemFree(), comm_finalize(), comms_initialized, quda::destroyDslashEvents(), quda::blas::end(), quda::pool::flush_device(), quda::pool::flush_pinned(), flushChronoQuda(), freeCloverQuda(), freeGaugeQuda(), quda::LatticeField::freeGhostBuffer(), quda::cpuColorSpinorField::freeGhostBuffer(), getenv(), getVerbosity(), host_free, fused_exterior_ndeg_tm_dslash_cuda_gen::i, initialized, momResident, quda::Nstream, num_failures_d, num_failures_h, quda::TimeProfile::Print(), quda::printAPIProfile(), printfQuda, quda::TimeProfile::PrintGlobal(), quda::printLaunchTimer(), quda::printPeakMemUsage(), profileAPE, profileClover, profileCloverForce, profileContract, profileCovDev, profileDslash, profileEnd, profileExtendedGauge, profileFatLink, profileGauge, profileGaugeForce, profileGaugeUpdate, profileHISQForce, profileInit, profileInit2End, profileInvert, profileMomAction, profileMulti, profilePhase, profilePlaq, profileProject, profileQCharge, profileStaggeredForce, profileSTOUT, QUDA_MAX_CHRONO, quda::QUDA_PROFILE_TOTAL, QUDA_SUMMARIZE, quda::saveProfile(), quda::saveTuneCache(), solutionResident, strcmp(), and streams.

Referenced by end(), end_quda_(), gauge_force_test(), hisq_force_end(), llfat_test(), main(), SU3test(), StaggeredDslashTest::TearDownTestCase(), DslashTest::TearDownTestCase(), and unitarize_link_test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ flush_chrono_quda_()

void flush_chrono_quda_ ( int index)

Flush the chronological history for the given index.

Parameters
[in]indexIndex for which we are flushing

Definition at line 4765 of file interface_quda.cpp.

References flushChronoQuda(), and index().

Here is the call graph for this function:

◆ flushChronoQuda()

void flushChronoQuda ( int  index)

Flush the chronological history for the given index.

Parameters
[in]indexIndex for which we are flushing

Definition at line 1276 of file interface_quda.cpp.

References chronoResident(), errorQuda, fused_exterior_ndeg_tm_dslash_cuda_gen::i, and QUDA_MAX_CHRONO.

Referenced by endQuda(), and flush_chrono_quda_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ free_clover_quda_()

void free_clover_quda_ ( void  )

Free QUDA's internal copy of the clover term and/or clover inverse.

Definition at line 4727 of file interface_quda.cpp.

References freeCloverQuda().

Here is the call graph for this function:

◆ free_gauge_quda_()

void free_gauge_quda_ ( void  )

Free QUDA's internal copy of the gauge field.

Definition at line 4723 of file interface_quda.cpp.

References freeGaugeQuda().

Here is the call graph for this function:

◆ free_sloppy_gauge_quda_()

void free_sloppy_gauge_quda_ ( void  )

Free QUDA's internal copy of the gauge field.

Definition at line 4724 of file interface_quda.cpp.

References freeSloppyGaugeQuda().

Here is the call graph for this function:

◆ freeCloverQuda()

void freeCloverQuda ( void  )

Free QUDA's internal copy of the clover term and/or clover inverse.

Definition at line 1268 of file interface_quda.cpp.

References cloverPrecise, errorQuda, freeSloppyCloverQuda(), and initialized.

Referenced by endQuda(), free_clover_quda_(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ freeGaugeQuda()

void freeGaugeQuda ( void  )

◆ freeSloppyCloverQuda()

void freeSloppyCloverQuda ( void  )

Definition at line 1259 of file interface_quda.cpp.

References cloverPrecise, cloverPrecondition, cloverSloppy, errorQuda, and initialized.

Referenced by checkClover(), freeCloverQuda(), loadCloverQuda(), and loadSloppyCloverQuda().

Here is the caller graph for this function:

◆ freeSloppyGaugeQuda()

void freeSloppyGaugeQuda ( void  )

◆ gaussGaugeQuda()

void gaussGaugeQuda ( long  seed)

◆ getGaugePadding()

int getGaugePadding ( GaugeFieldParam param)

Definition at line 3651 of file interface_quda.cpp.

References param.

◆ init_default_comms()

static void init_default_comms ( )
static

Definition at line 334 of file interface_quda.cpp.

References errorQuda, initCommsGridQuda(), and ndim.

Referenced by initQuda(), and initQudaMemory().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_quda_()

void init_quda_ ( int device)

Initialize the library. Under the interface this just calls initQudaMemory and initQudaDevice.

Parameters
deviceCUDA device number to use. In a multi-GPU build, this parameter may be either set explicitly on a per-process basis or set to -1 to enable a default allocation of devices to processes.

Definition at line 4718 of file interface_quda.cpp.

References initQuda().

Here is the call graph for this function:

◆ init_quda_device_()

void init_quda_device_ ( int device)

Initialize the library. This is a low-level interface that is called by initQuda. Calling initQudaDevice requires that the user also call initQudaMemory before using QUDA.

Parameters
deviceCUDA device number to use. In a multi-GPU build, this parameter may either be set explicitly on a per-process basis or set to -1 to enable a default allocation of devices to processes.

Definition at line 4719 of file interface_quda.cpp.

References initQudaDevice().

Here is the call graph for this function:

◆ init_quda_memory_()

void init_quda_memory_ ( )

Initialize the library persistant memory allocations (both host and device). This is a low-level interface that is called by initQuda. Calling initQudaMemory requires that the user has previously called initQudaDevice.

Definition at line 4720 of file interface_quda.cpp.

References initQudaMemory().

Here is the call graph for this function:

◆ initCommsGridQuda()

void initCommsGridQuda ( int  nDim,
const int dims,
QudaCommsMap  func,
void *  fdata 
)

Declare the grid mapping ("logical topology" in QMP parlance) used for communications in a multi-GPU grid. This function should be called prior to initQuda(). The only case in which it's optional is when QMP is used for communication and the logical topology has already been declared by the application.

Parameters
nDimNumber of grid dimensions. "4" is the only supported value currently.
dimsArray of grid dimensions. dims[0]*dims[1]*dims[2]*dims[3] must equal the total number of MPI ranks or QMP nodes.
funcPointer to a user-supplied function that maps coordinates in the communication grid to MPI ranks (or QMP node IDs). If the pointer is NULL, the default mapping depends on whether QMP or MPI is being used for communication. With QMP, the existing logical topology is used if it's been declared. With MPI or as a fallback with QMP, the default ordering is lexicographical with the fourth ("t") index varying fastest.
fdataPointer to any data required by "func" (may be NULL)
See also
QudaCommsMap

Definition at line 291 of file interface_quda.cpp.

References comm_init(), comms_initialized, LexMapData::dims, errorQuda, func, fused_exterior_ndeg_tm_dslash_cuda_gen::i, lex_rank_from_coords(), LexMapData::ndim, and warningQuda.

Referenced by comm_set_gridsize_(), init_default_comms(), and initComms().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initQuda()

void initQuda ( int  device)

Initialize the library. This function is actually a wrapper around calls to initQudaDevice() and initQudaMemory().

Parameters
deviceCUDA device number to use. In a multi-GPU build, this parameter may either be set explicitly on a per-process basis or set to -1 to enable a default allocation of devices to processes.

Definition at line 546 of file interface_quda.cpp.

References comms_initialized, init_default_comms(), initQudaDevice(), and initQudaMemory().

Referenced by gauge_force_test(), hisq_force_init(), init(), init_quda_(), invert_test(), llfat_test(), main(), StaggeredDslashTest::SetUpTestCase(), DslashTest::SetUpTestCase(), SU3test(), and unitarize_link_test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initQudaDevice()

void initQudaDevice ( int  device)

Initialize the library. This is a low-level interface that is called by initQuda. Calling initQudaDevice requires that the user also call initQudaMemory before using QUDA.

Parameters
deviceCUDA device number to use. In a multi-GPU build, this parameter may either be set explicitly on a per-process basis or set to -1 to enable a default allocation of devices to processes.

Definition at line 365 of file interface_quda.cpp.

References atoi(), checkCudaErrorNoSync, comm_gpuid(), comms_initialized, deviceProp, errorQuda, getenv(), getVerbosity(), gitversion, fused_exterior_ndeg_tm_dslash_cuda_gen::i, initialized, printfQuda, profileInit, profileInit2End, QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_SILENT, QUDA_SUMMARIZE, quda::quda_version, quda::reorder_location_set(), setNumaAffinityNVML(), strcmp(), and warningQuda.

Referenced by init_quda_device_(), and initQuda().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initQudaMemory()

void initQudaMemory ( )

Initialize the library persistant memory allocations (both host and device). This is a low-level interface that is called by initQuda. Calling initQudaMemory requires that the user has previously called initQudaDevice.

Definition at line 500 of file interface_quda.cpp.

References checkCudaError, commDimPartitioned(), comms_initialized, quda::createDslashEvents(), d, greatestPriority, fused_exterior_ndeg_tm_dslash_cuda_gen::i, quda::blas::init(), quda::pool::init(), init_default_comms(), quda::loadTuneCache(), mapped_malloc, quda::Nstream, num_failures_d, num_failures_h, profileInit, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, R, redundant_comms, and streams.

Referenced by init_quda_memory_(), and initQuda().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ invert_multishift_quda_()

void invert_multishift_quda_ ( void *  _hp_x,
void *  _hp_b,
QudaInvertParam param 
)

Solve for multiple shifts (e.g., masses).

Parameters
_hp_xArray of solution spinor fields (large contiguous allocation)
_hp_bArray of source spinor fields
paramContains all metadata regarding host and device storage and solver parameters

Definition at line 4744 of file interface_quda.cpp.

References QudaGaugeParam_s::cpu_prec, errorQuda, gaugePrecise, fused_exterior_ndeg_tm_dslash_cuda_gen::i, invertMultiShiftQuda(), quda::GaugeField::Ncolor(), param, QUDA_ASQTAD_DSLASH, QUDA_MAX_MULTI_SHIFT, QUDA_STAGGERED_DSLASH, QUDA_TIFR_PADDED_DIRAC_ORDER, X, and quda::LatticeField::X().

Here is the call graph for this function:

◆ invert_quda_()

void invert_quda_ ( void *  h_x,
void *  h_b,
QudaInvertParam param 
)

Perform the solve, according to the parameters set in param. It is assumed that the gauge field has already been loaded via loadGaugeQuda().

Parameters
h_xSolution spinor field
h_bSource spinor field
paramContains all metadata regarding host and device storage and solver parameters

Definition at line 4736 of file interface_quda.cpp.

References fflush(), invertQuda(), param, QUDA_ASQTAD_DSLASH, and QUDA_STAGGERED_DSLASH.

Here is the call graph for this function:

◆ invertMultiShiftQuda()

void invertMultiShiftQuda ( void **  _hp_x,
void *  _hp_b,
QudaInvertParam param 
)

Generic version of the multi-shift solver. Should work for most fermions. Note that offset[0] is not folded into the mass parameter.

At present, the solution_type must be MATDAG_MAT or MATPCDAG_MATPC, and solve_type must be NORMOP or NORMOP_PC. The solution and solve preconditioning have to match.

Definition at line 3206 of file interface_quda.cpp.

References quda::blas::ax(), b, quda::blas::cDotProduct(), checkGauge(), quda::blas::copy(), quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), quda::createDirac(), QudaGaugeParam_s::cuda_prec, cudaGauge, d, dirac, double, errorQuda, gaugeFatPrecise, gaugePrecise, getVerbosity(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, initialized, quda::SolverParam::iter, quda::ColorSpinorParam::location, quda::massRescale(), quda::blas::norm2(), param, popVerbosity(), pow(), quda::LatticeFieldParam::precision, printfQuda, profileMulti, pushVerbosity(), QUDA_ASQTAD_DSLASH, QUDA_CG_INVERTER, QUDA_COPY_FIELD_CREATE, QUDA_DIRECT_PC_SOLVE, QUDA_DIRECT_SOLVE, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_DOMAIN_WALL_DSLASH, QUDA_HEAVY_QUARK_RESIDUAL, QUDA_MAT_SOLUTION, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_MAX_MULTI_SHIFT, QUDA_MOBIUS_DWF_DSLASH, QUDA_NORMOP_PC_SOLVE, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_PREAMBLE, quda::QUDA_PROFILE_TOTAL, QUDA_SOURCE_NORMALIZATION, QUDA_STAGGERED_DSLASH, QUDA_SUMMARIZE, QUDA_USE_INIT_GUESS_YES, QUDA_VERBOSE, QUDA_ZERO_FIELD_CREATE, quda::saveTuneCache(), quda::setKernelPackT(), quda::Dirac::setMass(), quda::DiracMdagM::shift, solutionResident, spinorSiteSize, quda::sqrt(), tmp, quda::SolverParam::tol, tol_hq, quda::SolverParam::tol_hq, quda::SolverParam::true_res, quda::SolverParam::true_res_hq, quda::SolverParam::true_res_hq_offset, quda::SolverParam::true_res_offset, quda::unscaled_shifts, quda::SolverParam::updateInvertParam(), quda::SolverParam::use_init_guess, quda::ColorSpinorParam::v, quda::LatticeField::VolumeCB(), X, quda::LatticeField::X(), x, and z.

Referenced by invert_multishift_quda_(), invert_test(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ invertMultiSrcQuda()

void invertMultiSrcQuda ( void **  _hp_x,
void **  _hp_b,
QudaInvertParam param 
)

Generic version of the multi-shift solver. Should work for most fermions. Note that offset[0] is not folded into the mass parameter.

At present, the solution_type must be MATDAG_MAT or MATPCDAG_MATPC, and solve_type must be NORMOP or NORMOP_PC. The solution and solve preconditioning have to match.

Definition at line 2848 of file interface_quda.cpp.

References quda::blas::ax(), b, checkGauge(), quda::ColorSpinorField::Component(), quda::ColorSpinorParam::composite_dim, quda::blas::copy(), quda::ColorSpinorParam::create, quda::Solver::create(), quda::ColorSpinorField::Create(), quda::createDirac(), QudaGaugeParam_s::cuda_prec, cudaGauge, d, dirac, double, errorQuda, getVerbosity(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, in, initialized, quda::ColorSpinorParam::is_component, quda::ColorSpinorParam::is_composite, quda::ColorSpinorParam::location, quda::massRescale(), quda::Dirac::Mdag(), quda::blas::norm2(), out, param, popVerbosity(), quda::GaugeCovDev::prepare(), printfQuda, printQudaInvertParam(), profileInvert, pushVerbosity(), QUDA_CG_INVERTER, QUDA_DEBUG_VERBOSE, QUDA_DIRECT_PC_SOLVE, QUDA_DIRECT_SOLVE, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_DOMAIN_WALL_DSLASH, QUDA_DOUBLE_PRECISION, QUDA_MAT_SOLUTION, QUDA_MATDAG_MAT_SOLUTION, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_MG_INVERTER, QUDA_MOBIUS_DWF_DSLASH, QUDA_NORMERR_PC_SOLVE, QUDA_NORMERR_SOLVE, QUDA_NORMOP_PC_SOLVE, QUDA_NULL_FIELD_CREATE, QUDA_PRESERVE_SOURCE_NO, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_TOTAL, QUDA_SOURCE_NORMALIZATION, QUDA_USE_INIT_GUESS_YES, QUDA_VERBOSE, QUDA_ZERO_FIELD_CREATE, quda::GaugeCovDev::reconstruct(), quda::saveTuneCache(), quda::setKernelPackT(), quda::solve(), spinorSiteSize, quda::sqrt(), tmp, quda::SolverParam::updateInvertParam(), quda::ColorSpinorParam::v, quda::LatticeField::VolumeCB(), X, quda::LatticeField::X(), and x.

Referenced by invert_test(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ invertQuda()

void invertQuda ( void *  h_x,
void *  h_b,
QudaInvertParam param 
)

Perform the solve, according to the parameters set in param. It is assumed that the gauge field has already been loaded via loadGaugeQuda().

Parameters
h_xSolution spinor field
h_bSource spinor field
paramContains all metadata regarding host and device storage and solver parameters

Definition at line 2521 of file interface_quda.cpp.

References quda::blas::ax(), b, quda::blas::cDotProduct(), checkGauge(), chronoResident(), quda::blas::copy(), quda::ColorSpinorParam::create, quda::Solver::create(), quda::ColorSpinorField::Create(), quda::createDirac(), QudaGaugeParam_s::cuda_prec, cudaGauge, d, dirac, double, errorQuda, getVerbosity(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, in, initialized, quda::ColorSpinorParam::location, quda::massRescale(), quda::Dirac::Mdag(), quda::blas::norm2(), out, param, popVerbosity(), quda::LatticeFieldParam::precision, quda::GaugeCovDev::prepare(), printfQuda, printQudaInvertParam(), profileInvert, pushVerbosity(), QUDA_CG_INVERTER, QUDA_COPY_FIELD_CREATE, QUDA_DEBUG_VERBOSE, QUDA_DIRECT_PC_SOLVE, QUDA_DIRECT_SOLVE, QUDA_DOMAIN_WALL_4D_DSLASH, QUDA_DOMAIN_WALL_DSLASH, QUDA_DOUBLE_PRECISION, QUDA_MAT_SOLUTION, QUDA_MATDAG_MAT_SOLUTION, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_MAX_CHRONO, QUDA_MG_INVERTER, QUDA_MOBIUS_DWF_DSLASH, QUDA_NORMERR_PC_SOLVE, QUDA_NORMERR_SOLVE, QUDA_NORMOP_PC_SOLVE, QUDA_NULL_FIELD_CREATE, QUDA_PRESERVE_SOURCE_NO, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_TOTAL, QUDA_SOURCE_NORMALIZATION, QUDA_USE_INIT_GUESS_YES, QUDA_VERBOSE, quda::GaugeCovDev::reconstruct(), quda::saveTuneCache(), quda::setKernelPackT(), solutionResident, quda::solve(), spinorSiteSize, quda::sqrt(), tmp, tmp2, quda::SolverParam::updateInvertParam(), quda::ColorSpinorParam::v, quda::LatticeField::VolumeCB(), X, quda::LatticeField::X(), x, and quda::blas::zero().

Referenced by invert_quda_(), invert_test(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ kinetic_quda_()

void kinetic_quda_ ( double kin,
void *  momentum,
QudaGaugeParam param 
)

Evaluate the kinetic (momentum) contribution to classical Hamiltonian for Hybrid Monte Carlo.

Parameters
kinKinetic energy
momentumThe momentum field
paramThe parameters of the external fields and the computation settings
Returns
momentum action

Definition at line 4922 of file interface_quda.cpp.

References momActionQuda(), and param.

Here is the call graph for this function:

◆ lanczosQuda()

void lanczosQuda ( int  k0,
int  m,
void *  hp_Apsi,
void *  hp_r,
void *  hp_V,
void *  hp_alpha,
void *  hp_beta,
QudaEigParam eig_param 
)

◆ lex_rank_from_coords()

static int lex_rank_from_coords ( const int coords,
void *  fdata 
)
static

For MPI, the default node mapping is lexicographical with t varying fastest.

Definition at line 267 of file interface_quda.cpp.

References LexMapData::dims, fused_exterior_ndeg_tm_dslash_cuda_gen::i, LexMapData::ndim, and rank.

Referenced by initCommsGridQuda().

Here is the caller graph for this function:

◆ load_clover_quda_()

void load_clover_quda_ ( void *  h_clover,
void *  h_clovinv,
QudaInvertParam inv_param 
)

Load the clover term and/or the clover inverse from the host. Either h_clover or h_clovinv may be set to NULL.

Parameters
h_cloverBase pointer to host clover field
h_cloverinvBase pointer to host clover inverse field
inv_paramContains all metadata regarding host and device storage

Definition at line 4725 of file interface_quda.cpp.

References inv_param, and loadCloverQuda().

Here is the call graph for this function:

◆ load_gauge_quda_()

void load_gauge_quda_ ( void *  h_gauge,
QudaGaugeParam param 
)

Load the gauge field from the host.

Parameters
h_gaugeBase pointer to host gauge field (regardless of dimensionality)
paramContains all metadata regarding host and device storage

Definition at line 4722 of file interface_quda.cpp.

References loadGaugeQuda(), and param.

Here is the call graph for this function:

◆ loadCloverQuda()

void loadCloverQuda ( void *  h_clover,
void *  h_clovinv,
QudaInvertParam inv_param 
)

Load the clover term and/or the clover inverse from the host. Either h_clover or h_clovinv may be set to NULL.

Parameters
h_cloverBase pointer to host clover field
h_cloverinvBase pointer to host clover inverse field
inv_paramContains all metadata regarding host and device storage

Definition at line 859 of file interface_quda.cpp.

References quda::GaugeField::Anisotropy(), quda::ColorSpinorField::Bytes(), checkCudaError, QudaInvertParam_s::cl_pad, quda::CloverFieldParam::clover, QudaInvertParam_s::clover_coeff, QudaInvertParam_s::clover_cpu_prec, QudaInvertParam_s::clover_cuda_prec, QudaInvertParam_s::clover_cuda_prec_precondition, QudaInvertParam_s::clover_cuda_prec_sloppy, QudaInvertParam_s::clover_location, QudaInvertParam_s::clover_order, QudaInvertParam_s::clover_rho, QudaInvertParam_s::cloverGiB, quda::CloverFieldParam::cloverInv, quda::cloverInvert(), cloverPrecise, QudaInvertParam_s::compute_clover, QudaInvertParam_s::compute_clover_inverse, QudaInvertParam_s::compute_clover_trlog, quda::cudaCloverField::copy(), quda::CloverFieldParam::create, createCloverQuda(), quda::CloverFieldParam::csw, quda::CloverField::Csw(), quda::CloverFieldParam::direct, QudaInvertParam_s::dslash_type, errorQuda, freeSloppyCloverQuda(), gaugePrecise, quda::LatticeField::GBytes(), getVerbosity(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, in, initialized, inv_param, invalidate_clover, quda::CloverFieldParam::inverse, quda::CloverFieldParam::invNorm, QudaInvertParam_s::kappa, loadSloppyCloverQuda(), QudaInvertParam_s::matpc_type, QudaInvertParam_s::mu, quda::CloverFieldParam::mu2, quda::LatticeFieldParam::nDim, quda::CloverFieldParam::norm, quda::CloverFieldParam::order, quda::LatticeFieldParam::pad, popVerbosity(), quda::LatticeFieldParam::precision, printfQuda, printQudaInvertParam(), profileClover, pushVerbosity(), QUDA_CLOVER_WILSON_DSLASH, QUDA_CPU_FIELD_LOCATION, QUDA_CUDA_FIELD_LOCATION, QUDA_DEBUG_VERBOSE, QUDA_DIRECT_PC_SOLVE, QUDA_FULL_SITE_SUBSET, QUDA_HALF_PRECISION, QUDA_MATPC_EVEN_EVEN_ASYMMETRIC, QUDA_MATPC_ODD_ODD_ASYMMETRIC, QUDA_MATPC_SOLUTION, QUDA_MATPCDAG_MATPC_SOLUTION, QUDA_NORMERR_PC_SOLVE, QUDA_NORMOP_PC_SOLVE, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_EPILOGUE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_REFERENCE_FIELD_CREATE, QUDA_TWISTED_CLOVER_DSLASH, QUDA_VERBOSE, qudaMemcpy, QudaInvertParam_s::return_clover, QudaInvertParam_s::return_clover_inverse, quda::CloverFieldParam::setPrecision(), quda::CloverField::setRho(), quda::LatticeFieldParam::siteSubset, QudaInvertParam_s::solution_type, QudaInvertParam_s::solve_type, quda::CloverField::TrLog(), QudaInvertParam_s::trlogA, quda::CloverFieldParam::twisted, dslash_cuda_gen::twisted(), quda::CloverField::V(), quda::ColorSpinorField::V(), QudaInvertParam_s::verbosity, warningQuda, quda::LatticeFieldParam::x, and quda::LatticeField::X().

Referenced by init(), load_clover_quda_(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadGaugeQuda()

void loadGaugeQuda ( void *  h_gauge,
QudaGaugeParam param 
)

Load the gauge field from the host.

Parameters
h_gaugeBase pointer to host gauge field (regardless of dimensionality)
paramContains all metadata regarding host and device storage

Definition at line 602 of file interface_quda.cpp.

References commDimPartitioned(), quda::cudaGaugeField::copy(), createExtendedGauge(), QudaGaugeParam_s::cuda_prec, QudaGaugeParam_s::cuda_prec_precondition, QudaGaugeParam_s::cuda_prec_sloppy, errorQuda, quda::cudaGaugeField::exchangeGhost(), extendedGaugeResident, QudaGaugeParam_s::ga_pad, gauge_param, gaugeExtended, gaugeFatExtended, gaugeFatPrecise, gaugeFatPrecondition, gaugeFatSloppy, QudaGaugeParam_s::gaugeGiB, gaugeLongExtended, gaugeLongPrecise, gaugeLongPrecondition, gaugeLongSloppy, gaugePrecise, gaugePrecondition, gaugeSloppy, gaugeSmeared, quda::LatticeField::GBytes(), getVerbosity(), fused_exterior_ndeg_tm_dslash_cuda_gen::i, in, initialized, invalidate_clover, QudaGaugeParam_s::location, QudaGaugeParam_s::overlap, param, printfQuda, printQudaGaugeParam(), profileGauge, QUDA_ASQTAD_FAT_LINKS, QUDA_ASQTAD_LONG_LINKS, QUDA_BQCD_GAUGE_ORDER, QUDA_CPU_FIELD_LOCATION, QUDA_DEBUG_VERBOSE, QUDA_DOUBLE_PRECISION, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FLOAT4_GAUGE_ORDER, QUDA_GHOST_EXCHANGE_NO, QUDA_GHOST_EXCHANGE_PAD, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_NO, QUDA_SMEARED_LINKS, QUDA_VERBOSE, QUDA_WILSON_LINKS, R, quda::LatticeField::R(), QudaGaugeParam_s::reconstruct, quda::GaugeField::Reconstruct(), QudaGaugeParam_s::reconstruct_precondition, QudaGaugeParam_s::reconstruct_sloppy, QudaGaugeParam_s::type, and QudaGaugeParam_s::use_resident_gauge.

Referenced by init(), invert_test(), load_gauge_quda_(), main(), and SU3test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadSloppyCloverQuda()

void loadSloppyCloverQuda ( QudaPrecision  prec_sloppy,
QudaPrecision  prec_precondition 
)

◆ loadSloppyGaugeQuda()

void loadSloppyGaugeQuda ( QudaPrecision  prec_sloppy,
QudaPrecision  prec_precondition 
)

◆ mat_dag_mat_quda_()

void mat_dag_mat_quda_ ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param 
)

Apply M^{}M, possibly even/odd preconditioned.

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage

Definition at line 4734 of file interface_quda.cpp.

References inv_param, and MatDagMatQuda().

Here is the call graph for this function:

◆ mat_quda_()

void mat_quda_ ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param 
)

Apply the full Dslash matrix, possibly even/odd preconditioned.

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage

Definition at line 4732 of file interface_quda.cpp.

References inv_param, and MatQuda().

Here is the call graph for this function:

◆ MatDagMatQuda()

void MatDagMatQuda ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param 
)

◆ MatQuda()

void MatQuda ( void *  h_out,
void *  h_in,
QudaInvertParam inv_param 
)

◆ momActionQuda()

double momActionQuda ( void *  momentum,
QudaGaugeParam param 
)

Evaluate the momentum contribution to the Hybrid Monte Carlo action.

Parameters
momentumThe momentum field
paramThe parameters of the external fields and the computation settings
Returns
momentum action

Definition at line 4657 of file interface_quda.cpp.

References checkCudaError, quda::computeMomAction(), cpuMom, quda::GaugeFieldParam::create, cudaMom, errorQuda, gParam, quda::cudaGaugeField::loadCPUField(), QudaGaugeParam_s::make_resident_mom, momResident, quda::GaugeFieldParam::order, param, profileMomAction, QUDA_ASQTAD_MOM_LINKS, QUDA_FLOAT2_GAUGE_ORDER, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_10, QUDA_RECONSTRUCT_NO, QUDA_TIFR_GAUGE_ORDER, QUDA_TIFR_PADDED_GAUGE_ORDER, quda::GaugeFieldParam::reconstruct, and QudaGaugeParam_s::use_resident_mom.

Referenced by kinetic_quda_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ new_quda_gauge_param_()

void new_quda_gauge_param_ ( QudaGaugeParam param)

Initializes the QudaGaugeParam with default entries.

Parameters
TheQudaGaugeParam to be initialized

Definition at line 4777 of file interface_quda.cpp.

References newQudaGaugeParam(), and param.

Here is the call graph for this function:

◆ new_quda_invert_param_()

void new_quda_invert_param_ ( QudaInvertParam param)

Initializes the QudaInvertParam with default entries.

Parameters
TheQudaInvertParam to be initialized

Definition at line 4780 of file interface_quda.cpp.

References newQudaInvertParam(), and param.

Here is the call graph for this function:

◆ newDeflationQuda()

void* newDeflationQuda ( QudaEigParam param)

Create deflation solver resources.

Definition at line 2500 of file interface_quda.cpp.

References quda::flushProfile(), openMagma(), profileInvert, quda::QUDA_PROFILE_TOTAL, and quda::saveProfile().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ newMultigridQuda()

void* newMultigridQuda ( QudaMultigridParam param)

Setup the multigrid solver, according to the parameters set in param. It is assumed that the gauge field has already been loaded via loadGaugeQuda().

Parameters
paramContains all metadata regarding host and device storage and solver parameters

Definition at line 2364 of file interface_quda.cpp.

References quda::flushProfile(), profileInvert, quda::QUDA_PROFILE_TOTAL, quda::saveProfile(), and quda::saveTuneCache().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ openMagma()

void openMagma ( )

Open/Close MAGMA library

Definition at line 92 of file interface_quda.cpp.

References InitMagma, OpenMagma(), and printfQuda.

Referenced by newDeflationQuda().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ opp()

static int opp ( int  dir)
inlinestatic

Definition at line 4790 of file interface_quda.cpp.

Referenced by createGaugeForcePaths().

Here is the caller graph for this function:

◆ performAPEnStep()

void performAPEnStep ( unsigned int  nSteps,
double  alpha 
)

Performs APE smearing on gaugePrecise and stores it in gaugeSmeared

Parameters
nStepsNumber of steps to apply.
alphaAlpha coefficient for APE smearing.

Definition at line 5096 of file interface_quda.cpp.

References quda::APEStep(), quda::cudaGaugeField::copy(), createExtendedGauge(), errorQuda, quda::cudaGaugeField::exchangeExtendedGhost(), gaugePrecise, gaugeSmeared, getVerbosity(), gParam, fused_exterior_ndeg_tm_dslash_cuda_gen::i, quda::plaquette(), printfQuda, profileAPE, QUDA_CUDA_FIELD_LOCATION, quda::QUDA_PROFILE_TOTAL, QUDA_VERBOSE, R, and redundant_comms.

Referenced by SU3test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ performOvrImpSTOUTnStep()

void performOvrImpSTOUTnStep ( unsigned int  nSteps,
double  rho,
double  epsilon 
)

Performs Over Imroved STOUT smearing on gaugePrecise and stores it in gaugeSmeared

Parameters
nStepsNumber of steps to apply.
rhoRho coefficient for STOUT smearing.
epsilonEpsilon coefficient for Over Improved STOUT smearing.

Definition at line 5166 of file interface_quda.cpp.

References quda::cudaGaugeField::copy(), createExtendedGauge(), errorQuda, quda::cudaGaugeField::exchangeExtendedGhost(), gaugePrecise, gaugeSmeared, getVerbosity(), gParam, fused_exterior_ndeg_tm_dslash_cuda_gen::i, quda::OvrImpSTOUTStep(), quda::plaquette(), printfQuda, profileAPE, profileOvrImpSTOUT, QUDA_CUDA_FIELD_LOCATION, quda::QUDA_PROFILE_TOTAL, QUDA_VERBOSE, R, and redundant_comms.

Referenced by SU3test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ performSTOUTnStep()

void performSTOUTnStep ( unsigned int  nSteps,
double  rho 
)

Performs STOUT smearing on gaugePrecise and stores it in gaugeSmeared

Parameters
nStepsNumber of steps to apply.
rhoRho coefficient for STOUT smearing.

Definition at line 5131 of file interface_quda.cpp.

References quda::cudaGaugeField::copy(), createExtendedGauge(), errorQuda, quda::cudaGaugeField::exchangeExtendedGhost(), gaugePrecise, gaugeSmeared, getVerbosity(), gParam, fused_exterior_ndeg_tm_dslash_cuda_gen::i, quda::plaquette(), printfQuda, profileAPE, profileSTOUT, QUDA_CUDA_FIELD_LOCATION, quda::QUDA_PROFILE_TOTAL, QUDA_VERBOSE, R, redundant_comms, and quda::STOUTStep().

Referenced by SU3test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ performWuppertalnStep()

void performWuppertalnStep ( void *  h_out,
void *  h_in,
QudaInvertParam param,
unsigned int  nSteps,
double  alpha 
)

Performs Wuppertal smearing on a given spinor using the gauge field gaugeSmeared, if it exist, or gaugePrecise if no smeared field is present.

Parameters
h_outResult spinor field
h_inInput spinor field
paramContains all metadata regarding host and device storage and operator which will be applied to the spinor
nStepsNumber of steps to apply.
alphaAlpha coefficient for Wuppertal smearing.

Definition at line 5023 of file interface_quda.cpp.

References quda::copyExtendedGauge(), quda::GaugeFieldParam::create, quda::ColorSpinorParam::create, quda::ColorSpinorField::Create(), errorQuda, quda::cudaGaugeField::exchangeGhost(), gaugePrecise, gaugeSmeared, getVerbosity(), gParam, fused_exterior_ndeg_tm_dslash_cuda_gen::i, in, QudaInvertParam_s::input_location, inv_param, quda::ColorSpinorParam::location, quda::norm(), quda::blas::norm2(), out, QudaInvertParam_s::output_location, parity, popVerbosity(), printfQuda, printQudaInvertParam(), profileWuppertal, pushVerbosity(), QUDA_CUDA_FIELD_LOCATION, QUDA_DEBUG_VERBOSE, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_TOTAL, QUDA_VERBOSE, quda::ColorSpinorParam::v, QudaInvertParam_s::verbosity, quda::wuppertalStep(), and quda::LatticeField::X().

Here is the call graph for this function:

◆ plaq_quda_()

void plaq_quda_ ( double  plaq[3])
Parameters
Computesthe total, spatial and temporal plaquette averages of the loaded gauge configuration.
Arrayfor storing the averages (total, spatial, temporal)

Definition at line 4998 of file interface_quda.cpp.

References plaqQuda().

Here is the call graph for this function:

◆ plaqQuda()

void plaqQuda ( double  plaq[3])

Computes the total, spatial and temporal plaquette averages of the loaded gauge configuration.

Parameters
Arrayfor storing the averages (total, spatial, temporal)

Definition at line 5003 of file interface_quda.cpp.

References createExtendedGauge(), errorQuda, extendedGaugeResident, gaugePrecise, quda::plaquette(), profilePlaq, QUDA_CUDA_FIELD_LOCATION, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_TOTAL, and R.

Referenced by plaq_quda_(), and SU3test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ projectSU3Quda()

void projectSU3Quda ( void *  gauge_h,
double  tol,
QudaGaugeParam param 
)

◆ qChargeCuda()

double qChargeCuda ( )

Calculates the topological charge from gaugeSmeared, if it exist, or from gaugePrecise if no smeared fields are present.

Definition at line 5395 of file interface_quda.cpp.

References quda::computeFmunu(), quda::computeQCharge(), createExtendedGauge(), extendedGaugeResident, gaugePrecise, gaugeSmeared, quda::LatticeField::Precision(), profileQCharge, QUDA_CUDA_FIELD_LOCATION, QUDA_FLOAT2_GAUGE_ORDER, QUDA_FULL_SITE_SUBSET, QUDA_GHOST_EXCHANGE_NO, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_NO, QUDA_TENSOR_GEOMETRY, R, quda::LatticeFieldParam::siteSubset, and quda::LatticeField::X().

Referenced by SU3test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ register_pinned_quda_()

void register_pinned_quda_ ( void *  ptr,
size_t bytes 
)

Pinned a pre-existing memory allocation.

Parameters
[in]ptrPointer to buffer to be pinned
[in]sizeSize of allocation

Definition at line 4767 of file interface_quda.cpp.

References quda::blas::bytes, checkCudaError, and ptr.

◆ remove_staggered_phase_quda_()

void remove_staggered_phase_quda_ ( )

Remove the staggered phase factors to the resident gauge field.

Definition at line 4911 of file interface_quda.cpp.

References errorQuda, gaugePrecise, getVerbosity(), printfQuda, QUDA_VERBOSE, quda::qudaDeviceSynchronize(), and quda::GaugeField::removeStaggeredPhase().

Here is the call graph for this function:

◆ saveGaugeFieldQuda()

void saveGaugeFieldQuda ( void *  outGauge,
void *  inGauge,
QudaGaugeParam param 
)

Copy the QUDA gauge (matrix) field on the device to the CPU

Parameters
outGaugePointer to the host gauge field
inGaugePointer to the device gauge field (QUDA device field)
paramThe parameters of the host and device fields

Definition at line 3836 of file interface_quda.cpp.

References cpuGauge, cudaGauge, quda::GaugeFieldParam::geometry, quda::GaugeField::Geometry(), gParam, param, QUDA_GENERAL_LINKS, and quda::cudaGaugeField::saveCPUField().

Here is the call graph for this function:

◆ saveGaugeQuda()

void saveGaugeQuda ( void *  h_gauge,
QudaGaugeParam param 
)

◆ set_kernel_pack_t_()

void set_kernel_pack_t_ ( int pack)

fTemporary function exposed for TIFR benchmarking

Exposed due to poor derived MPI datatype performance with GPUDirect RDMA

Definition at line 4953 of file interface_quda.cpp.

References deg_tm_dslash_cuda_gen::pack, and quda::setKernelPackT().

Here is the call graph for this function:

◆ setVerbosityQuda()

void setVerbosityQuda ( QudaVerbosity  verbosity,
const char  prefix[],
FILE outfile 
)

Set parameters related to status reporting.

In typical usage, this function will be called once (or not at all) just before the call to initQuda(), but it's valid to call it any number of times at any point during execution. Prior to the first time it's called, the parameters take default values as indicated below.

Parameters
verbosityDefault verbosity, ranging from QUDA_SILENT to QUDA_DEBUG_VERBOSE. Within a solver, this parameter is overridden by the "verbosity" member of QudaInvertParam. The default value is QUDA_SUMMARIZE.
prefixString to prepend to all messages from QUDA. This defaults to the empty string (""), but you may wish to specify something like "QUDA: " to distinguish QUDA's output from that of your application.
outfileFile pointer (such as stdout, stderr, or a handle returned by fopen()) where messages should be printed. The default is stdout.

Definition at line 251 of file interface_quda.cpp.

References setOutputFile(), setOutputPrefix(), setVerbosity(), and verbosity.

Referenced by gauge_force_test(), and init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ staggeredPhaseQuda()

void staggeredPhaseQuda ( void *  gauge_h,
QudaGaugeParam param 
)

◆ unregister_pinned_quda_()

void unregister_pinned_quda_ ( void *  ptr)

Pinned a pre-existing memory allocation.

Parameters
[in]ptrPointer to buffer to be unpinned

Definition at line 4772 of file interface_quda.cpp.

References checkCudaError, and ptr.

◆ update_gauge_field_quda_()

void update_gauge_field_quda_ ( void *  gauge,
void *  momentum,
double dt,
bool *  conj_mom,
bool *  exact,
QudaGaugeParam param 
)

Evolve the gauge field by step size dt, using the momentum field I.e., Evalulate U(t+dt) = e(dt pi) U(t)

Parameters
gaugeThe gauge field to be updated
momentumThe momentum field
dtThe integration step size step
conj_momWhether to conjugate the momentum matrix
exactWhether to use an exact exponential or Taylor expand
paramThe parameters of the external fields and the computation settings

Definition at line 4784 of file interface_quda.cpp.

References param, and updateGaugeFieldQuda().

Here is the call graph for this function:

◆ updateGaugeFieldQuda()

void updateGaugeFieldQuda ( void *  gauge,
void *  momentum,
double  dt,
int  conj_mom,
int  exact,
QudaGaugeParam param 
)

Evolve the gauge field by step size dt, using the momentum field I.e., Evalulate U(t+dt) = e(dt pi) U(t)

Parameters
gaugeThe gauge field to be updated
momentumThe momentum field
dtThe integration step size step
conj_momWhether to conjugate the momentum matrix
exactWhether to use an exact exponential or Taylor expand
paramThe parameters of the external fields and the computation settings

Definition at line 4441 of file interface_quda.cpp.

References checkCudaError, cpuGauge, cpuMom, quda::GaugeFieldParam::create, cudaMom, errorQuda, QudaGaugeParam_s::gauge_offset, gaugePrecise, quda::LatticeFieldParam::ghostExchange, gParam, quda::GaugeFieldParam::link_type, quda::cudaGaugeField::loadCPUField(), QudaGaugeParam_s::make_resident_gauge, QudaGaugeParam_s::make_resident_mom, QudaGaugeParam_s::mom_offset, momResident, quda::GaugeFieldParam::order, quda::LatticeFieldParam::pad, param, profileGaugeUpdate, QUDA_ASQTAD_MOM_LINKS, QUDA_FLOAT2_GAUGE_ORDER, QUDA_GHOST_EXCHANGE_NO, QUDA_NULL_FIELD_CREATE, quda::QUDA_PROFILE_COMPUTE, quda::QUDA_PROFILE_D2H, quda::QUDA_PROFILE_FREE, quda::QUDA_PROFILE_H2D, quda::QUDA_PROFILE_INIT, quda::QUDA_PROFILE_TOTAL, QUDA_RECONSTRUCT_10, QUDA_RECONSTRUCT_NO, QUDA_SU3_LINKS, QUDA_TIFR_GAUGE_ORDER, QUDA_TIFR_PADDED_GAUGE_ORDER, quda::GaugeFieldParam::reconstruct, QudaGaugeParam_s::reconstruct, QudaGaugeParam_s::return_result_gauge, quda::cudaGaugeField::saveCPUField(), quda::GaugeFieldParam::site_offset, quda::GaugeFieldParam::site_size, QudaGaugeParam_s::site_size, quda::updateGaugeField(), QudaGaugeParam_s::use_resident_gauge, and QudaGaugeParam_s::use_resident_mom.

Referenced by update_gauge_field_quda_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateMultigridQuda()

void updateMultigridQuda ( void *  mg_instance,
QudaMultigridParam param 
)

◆ updateR()

void updateR ( )

update the radius for halos.

This should only be needed for automated testing when different partitioning is applied within a single run.

Definition at line 541 of file interface_quda.cpp.

References commDimPartitioned(), d, R, and redundant_comms.

Referenced by quda::CG::operator()(), quda::PreconCG::operator()(), quda::BiCGstab::operator()(), quda::MultiShiftCG::operator()(), quda::reliable(), StaggeredDslashTest::SetUp(), and DslashTest::SetUp().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ cloverPrecise

cudaCloverField* cloverPrecise = NULL

◆ cloverPrecondition

cudaCloverField* cloverPrecondition = NULL

◆ cloverSloppy

cudaCloverField* cloverSloppy = NULL

◆ comms_initialized

bool comms_initialized = false
static

◆ deviceProp

cudaDeviceProp deviceProp

◆ extendedGaugeResident

cudaGaugeField* extendedGaugeResident = NULL

◆ gaugeExtended

cudaGaugeField* gaugeExtended = NULL

◆ gaugeFatExtended

cudaGaugeField*& gaugeFatExtended = gaugeExtended

◆ gaugeFatPrecise

cudaGaugeField*& gaugeFatPrecise = gaugePrecise

◆ gaugeFatPrecondition

cudaGaugeField*& gaugeFatPrecondition = gaugePrecondition

◆ gaugeFatSloppy

cudaGaugeField*& gaugeFatSloppy = gaugeSloppy

◆ GaugeFixFFTQuda

TimeProfile GaugeFixFFTQuda("GaugeFixFFTQuda")
static

◆ GaugeFixOVRQuda

TimeProfile GaugeFixOVRQuda("GaugeFixOVRQuda")
static

Profiler for toal time spend between init and end.

Referenced by computeGaugeFixingOVRQuda().

◆ gaugeLongExtended

cudaGaugeField* gaugeLongExtended = NULL

◆ gaugeLongPrecise

cudaGaugeField* gaugeLongPrecise = NULL

◆ gaugeLongPrecondition

cudaGaugeField* gaugeLongPrecondition = NULL

◆ gaugeLongSloppy

cudaGaugeField* gaugeLongSloppy = NULL

◆ gaugePrecise

cudaGaugeField* gaugePrecise = NULL

◆ gaugePrecondition

cudaGaugeField* gaugePrecondition = NULL

◆ gaugeSloppy

cudaGaugeField* gaugeSloppy = NULL

◆ gaugeSmeared

cudaGaugeField* gaugeSmeared = NULL

◆ gitversion

char* gitversion

Definition at line 4 of file version.cpp.

Referenced by initQudaDevice().

◆ initialized

bool initialized = false
static

◆ InitMagma

bool InitMagma = false
static

Definition at line 90 of file interface_quda.cpp.

Referenced by closeMagma(), and openMagma().

◆ invalidate_clover

bool invalidate_clover = true
static

Definition at line 600 of file interface_quda.cpp.

Referenced by loadCloverQuda(), and loadGaugeQuda().

◆ momResident

cudaGaugeField* momResident = NULL

◆ num_failures_d

int* num_failures_d = NULL
static

◆ num_failures_h

int* num_failures_h = NULL
static

◆ profileAPE

TimeProfile profileAPE("APEQuda")
static

Profiler for STOUTQuda.

Referenced by endQuda(), performAPEnStep(), performOvrImpSTOUTnStep(), and performSTOUTnStep().

◆ profileClover

TimeProfile profileClover("loadCloverQuda")
static

Profiler for dslashQuda.

Referenced by createCloverQuda(), endQuda(), and loadCloverQuda().

◆ profileCloverForce

TimeProfile profileCloverForce("computeCloverForceQuda")
static

Profiler for computeStaggeredForceQuda.

Referenced by computeCloverForceQuda(), and endQuda().

◆ profileContract

TimeProfile profileContract("contractQuda")
static

Profiler for contractions.

Referenced by contract(), and endQuda().

◆ profileCovDev

TimeProfile profileCovDev("covDevQuda")
static

Profiler for contractions.

Referenced by endQuda().

◆ profileDslash

TimeProfile profileDslash("dslashQuda")
static

Profiler for invertQuda.

Referenced by dslashQuda(), and endQuda().

◆ profileEnd

TimeProfile profileEnd("endQuda")
static

Profiler for GaugeFixing.

Referenced by endQuda().

◆ profileExtendedGauge

TimeProfile profileExtendedGauge("createExtendedGaugeField")
static

Profiler for computeCloverForceQuda.

Referenced by endQuda().

◆ profileFatLink

TimeProfile profileFatLink("computeKSLinkQuda")
static

Profiler for computeGaugeForceQuda.

Referenced by computeKSLinkQuda(), and endQuda().

◆ profileGauge

TimeProfile profileGauge("loadGaugeQuda")
static

Profile for loadCloverQuda.

Referenced by endQuda(), loadGaugeQuda(), and saveGaugeQuda().

◆ profileGaugeForce

TimeProfile profileGaugeForce("computeGaugeForceQuda")
static

Profiler for updateGaugeFieldQuda.

Referenced by computeGaugeForceQuda(), and endQuda().

◆ profileGaugeUpdate

TimeProfile profileGaugeUpdate("updateGaugeFieldQuda")
static

Profiler for createExtendedGaugeField.

Referenced by endQuda(), and updateGaugeFieldQuda().

◆ profileGauss

TimeProfile profileGauss("gaussQuda")
static

Profiler for plaqQuda.

Referenced by gaussGaugeQuda().

◆ profileHISQForce

TimeProfile profileHISQForce("computeHISQForceQuda")
static

Profiler for plaqQuda.

Referenced by computeHISQForceQuda(), and endQuda().

◆ profileInit

TimeProfile profileInit("initQuda")
static

Profile for loadGaugeQuda / saveGaugeQuda.

Referenced by endQuda(), initQudaDevice(), and initQudaMemory().

◆ profileInit2End

TimeProfile profileInit2End("initQuda-endQuda", false)
static

Referenced by endQuda(), and initQudaDevice().

◆ profileInvert

TimeProfile profileInvert("invertQuda")
static

Profiler for invertMultiShiftQuda.

Referenced by endQuda(), invertMultiSrcQuda(), invertQuda(), lanczosQuda(), newDeflationQuda(), and newMultigridQuda().

◆ profileMomAction

TimeProfile profileMomAction("momActionQuda")
static

Profiler for endQuda.

Referenced by endQuda(), and momActionQuda().

◆ profileMulti

TimeProfile profileMulti("invertMultiShiftQuda")
static

Profiler for computeFatLinkQuda.

Referenced by endQuda(), and invertMultiShiftQuda().

◆ profileOvrImpSTOUT

TimeProfile profileOvrImpSTOUT("OvrImpSTOUTQuda")
static

Profiler for projectSU3Quda.

Referenced by performOvrImpSTOUTnStep().

◆ profilePhase

TimeProfile profilePhase("staggeredPhaseQuda")
static

Profiler for contractions.

Referenced by endQuda(), and staggeredPhaseQuda().

◆ profilePlaq

TimeProfile profilePlaq("plaqQuda")
static

Profiler for wuppertalQuda.

Referenced by endQuda(), and plaqQuda().

◆ profileProject

TimeProfile profileProject("projectSU3Quda")
static

Profiler for staggeredPhaseQuda.

Referenced by endQuda(), and projectSU3Quda().

◆ profileQCharge

TimeProfile profileQCharge("qChargeQuda")
static

Profiler for APEQuda.

Referenced by endQuda(), and qChargeCuda().

◆ profileStaggeredForce

TimeProfile profileStaggeredForce("computeStaggeredForceQuda")
static

Profiler for computeHISQForceQuda.

Referenced by computeStaggeredForceQuda(), and endQuda().

◆ profileSTOUT

TimeProfile profileSTOUT("STOUTQuda")
static

Profiler for OvrImpSTOUTQuda.

Referenced by endQuda(), and performSTOUTnStep().

◆ profileWuppertal

TimeProfile profileWuppertal("wuppertalQuda")
static

Profiler for gaussQuda.

Referenced by performWuppertalnStep().

◆ quda_version

const std::string quda_version = STR(QUDA_VERSION_MAJOR) "." STR(QUDA_VERSION_MINOR) "." STR(QUDA_VERSION_SUBMINOR)
static

Definition at line 356 of file interface_quda.cpp.

◆ R

int R[4] = {0, 0, 0, 0}
static

◆ redundant_comms

bool redundant_comms = false
static

◆ solutionResident

std::vector<cudaColorSpinorField*> solutionResident

◆ streams

cudaStream_t* streams

Definition at line 153 of file interface_quda.cpp.

Referenced by quda::ApplyClover(), quda::ApplyGamma(), quda::ApplyTwistClover(), quda::ApplyTwistGamma(), anonymous_namespace{dslash_policy.cuh}::commsComplete(), anonymous_namespace{dslash_policy.cuh}::completeDslash(), quda::contractCuda(), anonymous_namespace{dslash_policy.cuh}::DslashPolicyTune::DslashPolicyTune(), endQuda(), quda::cudaGaugeField::exchangeExtendedGhost(), quda::exchangeExtendedGhost(), quda::cudaGaugeField::exchangeGhost(), quda::cudaColorSpinorField::exchangeGhost(), quda::blas::init(), initQudaMemory(), quda::cudaGaugeField::injectGhost(), anonymous_namespace{dslash_policy.cuh}::issueGather(), anonymous_namespace{dslash_policy.cuh}::issuePack(), anonymous_namespace{dslash_policy.cuh}::DslashBasic::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashPthreads::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedExterior::operator()(), quda::XSD::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashGDR::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedGDR::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashZeroCopyPack::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopyPack::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashZeroCopyPackGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopyPackGDRRecv::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashZeroCopy::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashFusedZeroCopy::operator()(), anonymous_namespace{dslash_policy.cuh}::DslashNC::operator()(), mixed::reduceCuda(), quda::shiftColorSpinorField(), and quda::cudaColorSpinorField::zero().