QUDA  v0.7.0
A library for QCD on GPUs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
enum_quda.h
Go to the documentation of this file.
1 #ifndef _ENUM_QUDA_H
2 #define _ENUM_QUDA_H
3 
4 #include <limits.h>
5 #define QUDA_INVALID_ENUM INT_MIN
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11  //
12  // Types used in QudaGaugeParam
13  //
14 
15  typedef enum QudaLinkType_s {
20  QUDA_WILSON_LINKS = QUDA_SU3_LINKS, // used by wilson, clover, twisted mass, and domain wall
26  } QudaLinkType;
27 
28  typedef enum QudaGaugeFieldOrder_s {
30  QUDA_FLOAT2_GAUGE_ORDER = 2, // no reconstruct and double precision
31  QUDA_FLOAT4_GAUGE_ORDER = 4, // 8 and 12 reconstruct half and single
32  QUDA_QDP_GAUGE_ORDER, // expect *gauge[mu], even-odd, spacetime, row-column color
33  QUDA_QDPJIT_GAUGE_ORDER, // expect *gauge[mu], even-odd, complex-column-row-spacetime
34  QUDA_CPS_WILSON_GAUGE_ORDER, // expect *gauge, even-odd, mu, spacetime, column-row color
35  QUDA_MILC_GAUGE_ORDER, // expect *gauge, even-odd, mu, spacetime, row-column order
36  QUDA_BQCD_GAUGE_ORDER, // expect *gauge, mu, even-odd, spacetime+halos, column-row order
37  QUDA_TIFR_GAUGE_ORDER, // expect *gauge, mu, even-odd, spacetime, column-row order
40 
41  typedef enum QudaTboundary_s {
45  } QudaTboundary;
46 
47  typedef enum QudaPrecision_s {
52  } QudaPrecision;
53 
54  typedef enum QudaReconstructType_s {
55  QUDA_RECONSTRUCT_NO = 18, // store all 18 real numbers explicitly
56  QUDA_RECONSTRUCT_12 = 12, // reconstruct from 12 real numbers
57  QUDA_RECONSTRUCT_8 = 8, // reconstruct from 8 real numbers
58  QUDA_RECONSTRUCT_9 = 9, // used for storing HISQ long-link variables
59  QUDA_RECONSTRUCT_13 = 13, // used for storing HISQ long-link variables
60  QUDA_RECONSTRUCT_10 = 10, // 10-number parameterization used for storing the momentum field
63 
64  typedef enum QudaGaugeFixed_s {
65  QUDA_GAUGE_FIXED_NO, // no gauge fixing
66  QUDA_GAUGE_FIXED_YES, // gauge field stored in temporal gauge
69 
70  //
71  // Types used in QudaInvertParam
72  //
73 
74  typedef enum QudaDslashType_s {
86 
87  typedef enum QudaDslashPolicy_s {
96 
97  typedef enum QudaInverterType_s {
111 
112  typedef enum QudaEigType_s {
113  QUDA_LANCZOS, //Normal Lanczos eigen solver
114  QUDA_IMP_RST_LANCZOS, //implicit restarted lanczos solver
116  } QudaEigType;
117 
118  typedef enum QudaSolutionType_s {
127 
128  typedef enum QudaSolveType_s {
138  } QudaSolveType;
139 
140  typedef enum QudaSchwarzType_s {
144  } QudaSchwarzType;
145 
146  typedef enum QudaResidualType_s {
147  QUDA_L2_RELATIVE_RESIDUAL = 1, // L2 relative residual (default)
148  QUDA_L2_ABSOLUTE_RESIDUAL = 2, // L2 absolute residual
149  QUDA_HEAVY_QUARK_RESIDUAL = 4, // Fermilab heavy quark residual
152 
153  // Whether the preconditioned matrix is (1-k^2 Deo Doe) or (1-k^2 Doe Deo)
154  //
155  // For the clover-improved Wilson Dirac operator, QUDA_MATPC_EVEN_EVEN
156  // defaults to the "symmetric" form, (1 - k^2 A_ee^-1 D_eo A_oo^-1 D_oe),
157  // and likewise for QUDA_MATPC_ODD_ODD.
158  //
159  // For the "asymmetric" form, (A_ee - k^2 D_eo A_oo^-1 D_oe), select
160  // QUDA_MATPC_EVEN_EVEN_ASYMMETRIC.
161  //
162  typedef enum QudaMatPCType_s {
168  } QudaMatPCType;
169 
170  typedef enum QudaDagType_s {
174  } QudaDagType;
175 
176  typedef enum QudaMassNormalization_s {
182 
184  QUDA_DEFAULT_NORMALIZATION, // leave source and solution untouched
185  QUDA_SOURCE_NORMALIZATION // normalize such that || src || = 1
187 
188  typedef enum QudaPreserveSource_s {
189  QUDA_PRESERVE_SOURCE_NO, // use the source for the residual
190  QUDA_PRESERVE_SOURCE_YES, // keep the source intact
193 
194  typedef enum QudaDiracFieldOrder_s {
195  QUDA_INTERNAL_DIRAC_ORDER, // internal dirac order used, varies on precision and dslash type
196  QUDA_DIRAC_ORDER, // even-odd, color inside spin
197  QUDA_QDP_DIRAC_ORDER, // even-odd, spin inside color
198  QUDA_QDPJIT_DIRAC_ORDER, // even-odd, complex-color-spin-spacetime
199  QUDA_CPS_WILSON_DIRAC_ORDER, // odd-even, color inside spin
200  QUDA_LEX_DIRAC_ORDER, // lexicographical order, color inside spin
203 
204  typedef enum QudaCloverFieldOrder_s {
205  QUDA_FLOAT_CLOVER_ORDER=1, // even-odd float ordering
206  QUDA_FLOAT2_CLOVER_ORDER=2, // even-odd float2 ordering
207  QUDA_FLOAT4_CLOVER_ORDER=4, // even-odd float4 ordering
208  QUDA_PACKED_CLOVER_ORDER, // even-odd, QDP packed
209  QUDA_QDPJIT_CLOVER_ORDER, // (diagonal / off-diagonal)-chirality-spacetime
210  QUDA_BQCD_CLOVER_ORDER, // even-odd, super-diagonal packed and reordered
213 
214  typedef enum QudaVerbosity_s {
220  } QudaVerbosity;
221 
222  typedef enum QudaTune_s {
226  } QudaTune;
227 
228  typedef enum QudaPreserveDirac_s {
233 
234  //
235  // Type used for "parity" argument to dslashQuda()
236  //
237 
238  typedef enum QudaParity_s {
242  } QudaParity;
243 
244  //
245  // Types used only internally
246  //
247 
248  typedef enum QudaDiracType_s {
255  QUDA_DOMAIN_WALL_4DPC_DIRAC,// 4D preconditioned domain wall dirac operator
266  } QudaDiracType;
267 
268  // Where the field is stored
269  typedef enum QudaFieldLocation_s {
274 
275  // Which sites are included
276  typedef enum QudaSiteSubset_s {
280  } QudaSiteSubset;
281 
282  // Site ordering (always t-z-y-x, with rightmost varying fastest)
283  typedef enum QudaSiteOrder_s {
284  QUDA_LEXICOGRAPHIC_SITE_ORDER, // lexicographic ordering
285  QUDA_EVEN_ODD_SITE_ORDER, // QUDA and QDP use this
286  QUDA_ODD_EVEN_SITE_ORDER, // CPS uses this
288  } QudaSiteOrder;
289 
290  // Degree of freedom ordering
291  typedef enum QudaFieldOrder_s {
292  QUDA_FLOAT_FIELD_ORDER = 1, // spin-color-complex-space
293  QUDA_FLOAT2_FIELD_ORDER = 2, // (spin-color-complex)/2-space-(spin-color-complex)%2
294  QUDA_FLOAT4_FIELD_ORDER = 4, // (spin-color-complex)/4-space-(spin-color-complex)%4
295  QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, // CPS/QDP++ ordering
296  QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, // QLA ordering (spin inside color)
297  QUDA_QDPJIT_FIELD_ORDER, // QDP field ordering (complex-color-spin-spacetime)
298  QUDA_QOP_DOMAIN_WALL_FIELD_ORDER, // QOP domain-wall ordering
300  } QudaFieldOrder;
301 
302  typedef enum QudaFieldCreate_s {
303  QUDA_NULL_FIELD_CREATE, // create new field
304  QUDA_ZERO_FIELD_CREATE, // create new field and zero it
305  QUDA_COPY_FIELD_CREATE, // create copy to field
306  QUDA_REFERENCE_FIELD_CREATE, // create reference to field
308  } QudaFieldCreate;
309 
310  typedef enum QudaGammaBasis_s {
315  } QudaGammaBasis;
316 
317  typedef enum QudaSourceType_s {
321  } QudaSourceType;
322 
323  // used to select preconditioning method in domain-wall fermion
324  typedef enum QudaDWFPCType_s {
328  } QudaDWFPCType;
329 
330  typedef enum QudaTwistFlavorType_s {
338 
339  typedef enum QudaTwistDslashType_s {
346 
353 
354  typedef enum QudaTwistGamma5Type_s {
359 
360  typedef enum QudaUseInitGuess_s {
365 
366  typedef enum QudaDirection_s {
370  } QudaDirection;
371 
372  typedef enum QudaComputeFatMethod_s {
377 
378  typedef enum QudaFatLinkFlag_s {
382  } QudaFatLinkFlag;
383 
384  typedef enum QudaFieldGeometry_s {
390 
391  typedef enum QudaGhostExchange_s {
397 
398  typedef enum QudaStaggeredPhase_s {
404 
405  typedef enum QudaContractType_s {
417 
418 #ifdef __cplusplus
419 }
420 #endif
421 
422 #endif // _ENUM_QUDA_H
enum QudaPreserveSource_s QudaPreserveSource
enum QudaMassNormalization_s QudaMassNormalization
#define QUDA_INVALID_ENUM
Definition: enum_quda.h:5
QudaPreserveDirac_s
Definition: enum_quda.h:228
enum QudaPrecision_s QudaPrecision
QudaTune_s
Definition: enum_quda.h:222
enum QudaResidualType_s QudaResidualType
QudaSchwarzType_s
Definition: enum_quda.h:140
QudaPreserveSource_s
Definition: enum_quda.h:188
QudaUseInitGuess_s
Definition: enum_quda.h:360
QudaTboundary_s
Definition: enum_quda.h:41
QudaGammaBasis_s
Definition: enum_quda.h:310
QudaComputeFatMethod_s
Definition: enum_quda.h:372
enum QudaSolveType_s QudaSolveType
enum QudaFieldOrder_s QudaFieldOrder
enum QudaTwistCloverDslashType_s QudaTwistCloverDslashType
QudaFieldGeometry_s
Definition: enum_quda.h:384
QudaFieldLocation_s
Definition: enum_quda.h:269
enum QudaSiteOrder_s QudaSiteOrder
QudaVerbosity_s
Definition: enum_quda.h:214
QudaFatLinkFlag_s
Definition: enum_quda.h:378
QudaSiteOrder_s
Definition: enum_quda.h:283
QudaReconstructType_s
Definition: enum_quda.h:54
QudaDiracFieldOrder_s
Definition: enum_quda.h:194
QudaStaggeredPhase_s
Definition: enum_quda.h:398
enum QudaEigType_s QudaEigType
QudaGhostExchange_s
Definition: enum_quda.h:391
enum QudaTboundary_s QudaTboundary
QudaFieldOrder_s
Definition: enum_quda.h:291
QudaTwistFlavorType_s
Definition: enum_quda.h:330
QudaParity_s
Definition: enum_quda.h:238
enum QudaSourceType_s QudaSourceType
enum QudaFatLinkFlag_s QudaFatLinkFlag
enum QudaDirection_s QudaDirection
enum QudaCloverFieldOrder_s QudaCloverFieldOrder
enum QudaDWFPCType_s QudaDWFPCType
QudaMassNormalization_s
Definition: enum_quda.h:176
QudaCloverFieldOrder_s
Definition: enum_quda.h:204
QudaEigType_s
Definition: enum_quda.h:112
QudaFieldCreate_s
Definition: enum_quda.h:302
QudaGaugeFixed_s
Definition: enum_quda.h:64
enum QudaStaggeredPhase_s QudaStaggeredPhase
QudaTwistDslashType_s
Definition: enum_quda.h:339
enum QudaPreserveDirac_s QudaPreserveDirac
QudaContractType_s
Definition: enum_quda.h:405
enum QudaGhostExchange_s QudaGhostExchange
enum QudaDslashPolicy_s QudaDslashPolicy
QudaDirection_s
Definition: enum_quda.h:366
enum QudaMatPCType_s QudaMatPCType
QudaSiteSubset_s
Definition: enum_quda.h:276
enum QudaGaugeFixed_s QudaGaugeFixed
enum QudaSolutionType_s QudaSolutionType
QudaInverterType_s
Definition: enum_quda.h:97
enum QudaSchwarzType_s QudaSchwarzType
QudaMatPCType_s
Definition: enum_quda.h:162
enum QudaGaugeFieldOrder_s QudaGaugeFieldOrder
enum QudaDagType_s QudaDagType
enum QudaParity_s QudaParity
enum QudaLinkType_s QudaLinkType
QudaDiracType_s
Definition: enum_quda.h:248
QudaDWFPCType_s
Definition: enum_quda.h:324
enum QudaSiteSubset_s QudaSiteSubset
enum QudaTwistDslashType_s QudaTwistDslashType
QudaDagType_s
Definition: enum_quda.h:170
QudaResidualType_s
Definition: enum_quda.h:146
enum QudaFieldLocation_s QudaFieldLocation
QudaTwistGamma5Type_s
Definition: enum_quda.h:354
enum QudaGammaBasis_s QudaGammaBasis
enum QudaReconstructType_s QudaReconstructType
QudaSourceType_s
Definition: enum_quda.h:317
QudaSolutionType_s
Definition: enum_quda.h:118
enum QudaTune_s QudaTune
QudaSolverNormalization_s
Definition: enum_quda.h:183
enum QudaDslashType_s QudaDslashType
enum QudaContractType_s QudaContractType
enum QudaFieldCreate_s QudaFieldCreate
enum QudaFieldGeometry_s QudaFieldGeometry
enum QudaVerbosity_s QudaVerbosity
enum QudaTwistGamma5Type_s QudaTwistGamma5Type
QudaGaugeFieldOrder_s
Definition: enum_quda.h:28
QudaDslashType_s
Definition: enum_quda.h:74
QudaSolveType_s
Definition: enum_quda.h:128
enum QudaComputeFatMethod_s QudaComputeFatMethod
enum QudaUseInitGuess_s QudaUseInitGuess
enum QudaSolverNormalization_s QudaSolverNormalization
QudaTwistCloverDslashType_s
Definition: enum_quda.h:347
enum QudaInverterType_s QudaInverterType
QudaLinkType_s
Definition: enum_quda.h:15
QudaDslashPolicy_s
Definition: enum_quda.h:87
enum QudaDiracType_s QudaDiracType
QudaPrecision_s
Definition: enum_quda.h:47
enum QudaTwistFlavorType_s QudaTwistFlavorType
enum QudaDiracFieldOrder_s QudaDiracFieldOrder