QUDA v0.4.0
A library for QCD on GPUs
|
Main header file for the QUDA library. More...
#include <enum_quda.h>
Go to the source code of this file.
Classes | |
struct | QudaGaugeParam_s |
struct | QudaInvertParam_s |
Defines | |
#define | QUDA_VERSION_MAJOR 0 |
#define | QUDA_VERSION_MINOR 4 |
#define | QUDA_VERSION_SUBMINOR 0 |
#define | QUDA_VERSION ((QUDA_VERSION_MAJOR<<16) | (QUDA_VERSION_MINOR<<8) | QUDA_VERSION_SUBMINOR) |
This macro is deprecated. Use QUDA_VERSION_MAJOR, etc., instead. | |
#define | QUDA_MAX_DIM 6 |
Maximum number of dimensions supported by QUDA. In practice, no routines make use of more than 5. | |
#define | QUDA_MAX_MULTI_SHIFT 32 |
Maximum number of shifts supported by the multi-shift solver. This number may be changed if need be. | |
Typedefs | |
typedef struct QudaGaugeParam_s | QudaGaugeParam |
typedef struct QudaInvertParam_s | QudaInvertParam |
Functions | |
void | initQuda (int device) |
void | loadGaugeQuda (void *h_gauge, QudaGaugeParam *param) |
void | freeGaugeQuda (void) |
void | saveGaugeQuda (void *h_gauge, QudaGaugeParam *param) |
void | loadCloverQuda (void *h_clover, void *h_clovinv, QudaInvertParam *inv_param) |
void | freeCloverQuda (void) |
void | invertQuda (void *h_x, void *h_b, QudaInvertParam *param) |
void | invertMultiShiftQuda (void **_hp_x, void *_hp_b, QudaInvertParam *param, double *offsets, int num_offsets, double *residue_sq) |
void | invertMultiShiftQudaMixed (void **_hp_x, void *_hp_b, QudaInvertParam *param, double *offsets, int num_offsets, double *residue_sq) |
void | dslashQuda (void *h_out, void *h_in, QudaInvertParam *inv_param, QudaParity parity) |
void | MatQuda (void *h_out, void *h_in, QudaInvertParam *inv_param) |
void | MatDagMatQuda (void *h_out, void *h_in, QudaInvertParam *inv_param) |
void | endQuda (void) |
QudaGaugeParam | newQudaGaugeParam (void) |
QudaInvertParam | newQudaInvertParam (void) |
void | printQudaGaugeParam (QudaGaugeParam *param) |
void | printQudaInvertParam (QudaInvertParam *param) |
void | record_gauge (int *X, void *_fatlink, int _fatlink_pad, void *_longlink, int _longlink_pad, QudaReconstructType _longlink_recon, QudaReconstructType _longlink_recon_sloppy, QudaGaugeParam *_param) |
void | set_dim (int *) |
void | pack_ghost (void **cpuLink, void **cpuGhost, int nFace, QudaPrecision precision) |
void | setFatLinkPadding (QudaComputeFatMethod method, QudaGaugeParam *param) |
int | computeFatLinkQuda (void *fatlink, void **sitelink, double *act_path_coeff, QudaGaugeParam *param, QudaComputeFatMethod method) |
void | initCommsQuda (int argc, char **argv, const int *X, const int nDim) |
void | endCommsQuda () |
Main header file for the QUDA library.
Note to QUDA developers: When adding new members to QudaGaugeParam and QudaInvertParam, be sure to update lib/check_params.h
Definition in file quda.h.
#define QUDA_MAX_DIM 6 |
#define QUDA_MAX_MULTI_SHIFT 32 |
#define QUDA_VERSION ((QUDA_VERSION_MAJOR<<16) | (QUDA_VERSION_MINOR<<8) | QUDA_VERSION_SUBMINOR) |
typedef struct QudaGaugeParam_s QudaGaugeParam |
Parameters having to do with the gauge field or the interpretation of the gauge field by various Dirac operators
typedef struct QudaInvertParam_s QudaInvertParam |
int computeFatLinkQuda | ( | void * | fatlink, |
void ** | sitelink, | ||
double * | act_path_coeff, | ||
QudaGaugeParam * | param, | ||
QudaComputeFatMethod | method | ||
) |
void dslashQuda | ( | void * | h_out, |
void * | h_in, | ||
QudaInvertParam * | inv_param, | ||
QudaParity | parity | ||
) |
Apply the Dslash operator (D_{eo} or D_{oe})
Definition at line 633 of file interface_quda.cpp.
void endCommsQuda | ( | ) |
Definition at line 1909 of file interface_quda.cpp.
void endQuda | ( | void | ) |
Finalize the library
Definition at line 431 of file interface_quda.cpp.
void freeCloverQuda | ( | void | ) |
Free QUDA's internal copy of the clover term and/or clover inverse.
Definition at line 420 of file interface_quda.cpp.
void freeGaugeQuda | ( | void | ) |
Free QUDA's internal copy of the gauge field.
Definition at line 393 of file interface_quda.cpp.
void initCommsQuda | ( | int | argc, |
char ** | argv, | ||
const int * | X, | ||
const int | nDim | ||
) |
Definition at line 1880 of file interface_quda.cpp.
void initQuda | ( | int | device | ) |
Initialize the library.
device | CUDA 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 108 of file interface_quda.cpp.
void invertMultiShiftQuda | ( | void ** | _hp_x, |
void * | _hp_b, | ||
QudaInvertParam * | param, | ||
double * | offsets, | ||
int | num_offsets, | ||
double * | residue_sq | ||
) |
Solve for multiple shifts (e.g., masses).
Generic version of the multi-shift solver. Should work for most fermions. Note, offset[0] is not folded into the mass parameter
Definition at line 944 of file interface_quda.cpp.
void invertMultiShiftQudaMixed | ( | void ** | _hp_x, |
void * | _hp_b, | ||
QudaInvertParam * | param, | ||
double * | offsets, | ||
int | num_offsets, | ||
double * | residue_sq | ||
) |
Mixed-precision multi-shift solver. In the future, this functionality will be folded into invertMultiShiftQuda().
Definition at line 1269 of file interface_quda.cpp.
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().
Definition at line 786 of file interface_quda.cpp.
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.
Definition at line 315 of file interface_quda.cpp.
void loadGaugeQuda | ( | void * | h_gauge, |
QudaGaugeParam * | param | ||
) |
Load the gauge field from the host.
Definition at line 205 of file interface_quda.cpp.
void MatDagMatQuda | ( | void * | h_out, |
void * | h_in, | ||
QudaInvertParam * | inv_param | ||
) |
Apply M^{}M, possibly even/odd preconditioned
Definition at line 709 of file interface_quda.cpp.
void MatQuda | ( | void * | h_out, |
void * | h_in, | ||
QudaInvertParam * | inv_param | ||
) |
Apply the full Dslash matrix, possibly even/odd preconditioned
Definition at line 668 of file interface_quda.cpp.
QudaGaugeParam newQudaGaugeParam | ( | void | ) |
A new QudaGaugeParam should always be initialized immediately after it's defined (and prior to explicitly setting its members) using this function. Typical usage is as follows:
QudaGaugeParam gauge_param = newQudaGaugeParam();
QudaInvertParam newQudaInvertParam | ( | void | ) |
A new QudaInvertParam should always be initialized immediately after it's defined (and prior to explicitly setting its members) using this function. Typical usage is as follows:
QudaInvertParam invert_param = newQudaInvertParam();
void pack_ghost | ( | void ** | cpuLink, |
void ** | cpuGhost, | ||
int | nFace, | ||
QudaPrecision | precision | ||
) |
void printQudaGaugeParam | ( | QudaGaugeParam * | param | ) |
Print the members of QudaGaugeParam.
Definition at line 39 of file check_params.h.
void printQudaInvertParam | ( | QudaInvertParam * | param | ) |
Print the members of QudaGaugeParam.
Definition at line 109 of file check_params.h.
void record_gauge | ( | int * | X, |
void * | _fatlink, | ||
int | _fatlink_pad, | ||
void * | _longlink, | ||
int | _longlink_pad, | ||
QudaReconstructType | _longlink_recon, | ||
QudaReconstructType | _longlink_recon_sloppy, | ||
QudaGaugeParam * | _param | ||
) |
Definition at line 1146 of file interface_quda.cpp.
void saveGaugeQuda | ( | void * | h_gauge, |
QudaGaugeParam * | param | ||
) |
Save the gauge field to the host.
Definition at line 289 of file interface_quda.cpp.
void set_dim | ( | int * | ) |
void setFatLinkPadding | ( | QudaComputeFatMethod | method, |
QudaGaugeParam * | param | ||
) |