QUDA v0.4.0
A library for QCD on GPUs
Classes | Defines | Typedefs | Functions
quda/include/quda.h File Reference

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 ()

Detailed Description

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 Documentation

#define QUDA_MAX_DIM   6

Maximum number of dimensions supported by QUDA. In practice, no routines make use of more than 5.

Definition at line 33 of file quda.h.

#define QUDA_MAX_MULTI_SHIFT   32

Maximum number of shifts supported by the multi-shift solver. This number may be changed if need be.

Definition at line 40 of file quda.h.

#define QUDA_VERSION   ((QUDA_VERSION_MAJOR<<16) | (QUDA_VERSION_MINOR<<8) | QUDA_VERSION_SUBMINOR)

This macro is deprecated. Use QUDA_VERSION_MAJOR, etc., instead.

Definition at line 22 of file quda.h.

#define QUDA_VERSION_MAJOR   0

Definition at line 14 of file quda.h.

#define QUDA_VERSION_MINOR   4

Definition at line 15 of file quda.h.

#define QUDA_VERSION_SUBMINOR   0

Definition at line 16 of file quda.h.


Typedef Documentation

Parameters having to do with the gauge field or the interpretation of the gauge field by various Dirac operators


Function Documentation

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.

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 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 
)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines