QUDA v0.4.0
A library for QCD on GPUs
|
00001 #ifndef _ENUM_QUDA_H 00002 #define _ENUM_QUDA_H 00003 00004 #include <limits.h> 00005 #define QUDA_INVALID_ENUM INT_MIN 00006 00007 #ifdef __cplusplus 00008 extern "C" { 00009 #endif 00010 00011 // 00012 // Types used in QudaGaugeParam 00013 // 00014 00015 typedef enum QudaLinkType_s { 00016 QUDA_WILSON_LINKS, // used by wilson, clover, twisted mass, and domain wall 00017 QUDA_ASQTAD_FAT_LINKS, 00018 QUDA_ASQTAD_LONG_LINKS, 00019 QUDA_ASQTAD_MOM_LINKS, 00020 QUDA_INVALID_LINKS = QUDA_INVALID_ENUM 00021 } QudaLinkType; 00022 00023 00024 00025 typedef enum QudaGaugeFieldOrder_s { 00026 QUDA_FLOAT_GAUGE_ORDER = 1, 00027 QUDA_FLOAT2_GAUGE_ORDER = 2, // no reconstruct and double precision 00028 QUDA_FLOAT4_GAUGE_ORDER = 4, // 8 and 12 reconstruct half and single 00029 QUDA_QDP_GAUGE_ORDER, // expect *gauge[4], even-odd, row-column color 00030 QUDA_CPS_WILSON_GAUGE_ORDER, // expect *gauge, even-odd, mu inside, column-row color 00031 QUDA_MILC_GAUGE_ORDER, // expect *gauge, even-odd, mu inside, row-column order 00032 QUDA_INVALID_GAUGE_ORDER = QUDA_INVALID_ENUM 00033 } QudaGaugeFieldOrder; 00034 00035 typedef enum QudaTboundary_s { 00036 QUDA_ANTI_PERIODIC_T = -1, 00037 QUDA_PERIODIC_T = 1, 00038 QUDA_INVALID_T_BOUNDARY = QUDA_INVALID_ENUM 00039 } QudaTboundary; 00040 00041 typedef enum QudaPrecision_s { 00042 QUDA_HALF_PRECISION = 2, 00043 QUDA_SINGLE_PRECISION = 4, 00044 QUDA_DOUBLE_PRECISION = 8, 00045 QUDA_INVALID_PRECISION = QUDA_INVALID_ENUM 00046 } QudaPrecision; 00047 00048 typedef enum QudaReconstructType_s { 00049 QUDA_RECONSTRUCT_NO = 18, // store all 18 real numbers explicitly 00050 QUDA_RECONSTRUCT_12 = 12, // reconstruct from 12 real numbers 00051 QUDA_RECONSTRUCT_8 = 8, // reconstruct from 8 real numbers 00052 QUDA_RECONSTRUCT_10 = 10, // 10-number parameterization used for storing the momentum field 00053 QUDA_RECONSTRUCT_INVALID = QUDA_INVALID_ENUM 00054 } QudaReconstructType; 00055 00056 typedef enum QudaGaugeFixed_s { 00057 QUDA_GAUGE_FIXED_NO, // no gauge fixing 00058 QUDA_GAUGE_FIXED_YES, // gauge field stored in temporal gauge 00059 QUDA_GAUGE_FIXED_INVALID = QUDA_INVALID_ENUM 00060 } QudaGaugeFixed; 00061 00062 // 00063 // Types used in QudaInvertParam 00064 // 00065 00066 typedef enum QudaDslashType_s { 00067 QUDA_WILSON_DSLASH, 00068 QUDA_CLOVER_WILSON_DSLASH, 00069 QUDA_DOMAIN_WALL_DSLASH, 00070 QUDA_ASQTAD_DSLASH, 00071 QUDA_TWISTED_MASS_DSLASH, 00072 QUDA_INVALID_DSLASH = QUDA_INVALID_ENUM 00073 } QudaDslashType; 00074 00075 typedef enum QudaInverterType_s { 00076 QUDA_CG_INVERTER, 00077 QUDA_BICGSTAB_INVERTER, 00078 QUDA_GCR_INVERTER, 00079 QUDA_MR_INVERTER, 00080 QUDA_INVALID_INVERTER = QUDA_INVALID_ENUM 00081 } QudaInverterType; 00082 00083 typedef enum QudaSolutionType_s { 00084 QUDA_MAT_SOLUTION, 00085 QUDA_MATDAG_MAT_SOLUTION, 00086 QUDA_MATPC_SOLUTION, 00087 QUDA_MATPCDAG_MATPC_SOLUTION, 00088 QUDA_INVALID_SOLUTION = QUDA_INVALID_ENUM 00089 } QudaSolutionType; 00090 00091 typedef enum QudaSolveType_s { 00092 QUDA_DIRECT_SOLVE, 00093 QUDA_NORMEQ_SOLVE, 00094 QUDA_DIRECT_PC_SOLVE, 00095 QUDA_NORMEQ_PC_SOLVE, 00096 QUDA_INVALID_SOLVE = QUDA_INVALID_ENUM 00097 } QudaSolveType; 00098 00099 // Whether the preconditioned matrix is (1-k^2 Deo Doe) or (1-k^2 Doe Deo) 00100 // 00101 // For the clover-improved Wilson Dirac operator, QUDA_MATPC_EVEN_EVEN 00102 // defaults to the "symmetric" form, (1 - k^2 A_ee^-1 D_eo A_oo^-1 D_oe), 00103 // and likewise for QUDA_MATPC_ODD_ODD. 00104 // 00105 // For the "asymmetric" form, (A_ee - k^2 D_eo A_oo^-1 D_oe), select 00106 // QUDA_MATPC_EVEN_EVEN_ASYMMETRIC. 00107 // 00108 typedef enum QudaMatPCType_s { 00109 QUDA_MATPC_EVEN_EVEN, 00110 QUDA_MATPC_ODD_ODD, 00111 QUDA_MATPC_EVEN_EVEN_ASYMMETRIC, 00112 QUDA_MATPC_ODD_ODD_ASYMMETRIC, 00113 QUDA_MATPC_INVALID = QUDA_INVALID_ENUM 00114 } QudaMatPCType; 00115 00116 typedef enum QudaDagType_s { 00117 QUDA_DAG_NO, 00118 QUDA_DAG_YES, 00119 QUDA_DAG_INVALID = QUDA_INVALID_ENUM 00120 } QudaDagType; 00121 00122 typedef enum QudaMassNormalization_s { 00123 QUDA_KAPPA_NORMALIZATION, 00124 QUDA_MASS_NORMALIZATION, 00125 QUDA_ASYMMETRIC_MASS_NORMALIZATION, 00126 QUDA_INVALID_NORMALIZATION = QUDA_INVALID_ENUM 00127 } QudaMassNormalization; 00128 00129 typedef enum QudaPreserveSource_s { 00130 QUDA_PRESERVE_SOURCE_NO, // use the source for the residual 00131 QUDA_PRESERVE_SOURCE_YES, // keep the source intact 00132 QUDA_PRESERVE_SOURCE_INVALID = QUDA_INVALID_ENUM 00133 } QudaPreserveSource; 00134 00135 typedef enum QudaDiracFieldOrder_s { 00136 QUDA_DIRAC_ORDER, // even-odd, color inside spin 00137 QUDA_QDP_DIRAC_ORDER, // even-odd, spin inside color 00138 QUDA_CPS_WILSON_DIRAC_ORDER, // odd-even, color inside spin 00139 QUDA_LEX_DIRAC_ORDER, // lexicographical order, color inside spin 00140 QUDA_INVALID_DIRAC_ORDER = QUDA_INVALID_ENUM 00141 } QudaDiracFieldOrder; 00142 00143 typedef enum QudaCloverFieldOrder_s { 00144 QUDA_PACKED_CLOVER_ORDER, // even-odd, packed 00145 QUDA_LEX_PACKED_CLOVER_ORDER, // lexicographical order, packed 00146 QUDA_INVALID_CLOVER_ORDER = QUDA_INVALID_ENUM 00147 } QudaCloverFieldOrder; 00148 00149 typedef enum QudaVerbosity_s { 00150 QUDA_SILENT, 00151 QUDA_SUMMARIZE, 00152 QUDA_VERBOSE, 00153 QUDA_DEBUG_VERBOSE, 00154 QUDA_INVALID_VERBOSITY = QUDA_INVALID_ENUM 00155 } QudaVerbosity; 00156 00157 typedef enum QudaTune_s { 00158 QUDA_TUNE_NO, 00159 QUDA_TUNE_YES, 00160 QUDA_TUNE_INVALID = QUDA_INVALID_ENUM 00161 } QudaTune; 00162 00163 typedef enum QudaPreserveDirac_s { 00164 QUDA_PRESERVE_DIRAC_NO, 00165 QUDA_PRESERVE_DIRAC_YES, 00166 QUDA_PRESERVE_DIRAC_INVALID = QUDA_INVALID_ENUM 00167 } QudaPreserveDirac; 00168 00169 // 00170 // Type used for "parity" argument to dslashQuda() 00171 // 00172 00173 typedef enum QudaParity_s { 00174 QUDA_EVEN_PARITY = 0, 00175 QUDA_ODD_PARITY, 00176 QUDA_INVALID_PARITY = QUDA_INVALID_ENUM 00177 } QudaParity; 00178 00179 // 00180 // Types used only internally 00181 // 00182 00183 typedef enum QudaDiracType_s { 00184 QUDA_WILSON_DIRAC, 00185 QUDA_WILSONPC_DIRAC, 00186 QUDA_CLOVER_DIRAC, 00187 QUDA_CLOVERPC_DIRAC, 00188 QUDA_DOMAIN_WALL_DIRAC, 00189 QUDA_DOMAIN_WALLPC_DIRAC, 00190 QUDA_ASQTAD_DIRAC, 00191 QUDA_ASQTADPC_DIRAC, 00192 QUDA_TWISTED_MASS_DIRAC, 00193 QUDA_TWISTED_MASSPC_DIRAC, 00194 QUDA_INVALID_DIRAC = QUDA_INVALID_ENUM 00195 } QudaDiracType; 00196 00197 // Where the field is stored 00198 typedef enum QudaFieldLocation_s { 00199 QUDA_CPU_FIELD_LOCATION = 1, 00200 QUDA_CUDA_FIELD_LOCATION = 2, 00201 QUDA_INVALID_FIELD_LOCATION = QUDA_INVALID_ENUM 00202 } QudaFieldLocation; 00203 00204 // Which sites are included 00205 typedef enum QudaSiteSubset_s { 00206 QUDA_FULL_SITE_SUBSET, 00207 QUDA_PARITY_SITE_SUBSET, 00208 QUDA_INVALID_SITE_SUBSET = QUDA_INVALID_ENUM 00209 } QudaSiteSubset; 00210 00211 // Site ordering (always t-z-y-x, with rightmost varying fastest) 00212 typedef enum QudaSiteOrder_s { 00213 QUDA_LEXICOGRAPHIC_SITE_ORDER, // lexicographic ordering 00214 QUDA_EVEN_ODD_SITE_ORDER, // QUDA and QDP use this 00215 QUDA_ODD_EVEN_SITE_ORDER, // CPS uses this 00216 QUDA_INVALID_SITE_ORDER = QUDA_INVALID_ENUM 00217 } QudaSiteOrder; 00218 00219 // Degree of freedom ordering 00220 typedef enum QudaFieldOrder_s { 00221 QUDA_FLOAT_FIELD_ORDER = 1, // spin-color-complex-space 00222 QUDA_FLOAT2_FIELD_ORDER = 2, // (spin-color-complex)/2-space-(spin-color-complex)%2 00223 QUDA_FLOAT4_FIELD_ORDER = 4, // (spin-color-complex)/4-space-(spin-color-complex)%4 00224 QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, // CPS/QDP++ ordering 00225 QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, // QLA ordering (spin inside color) 00226 QUDA_QOP_DOMAIN_WALL_FIELD_ORDER, // QOP domain-wall ordering 00227 QUDA_INVALID_FIELD_ORDER = QUDA_INVALID_ENUM 00228 } QudaFieldOrder; 00229 00230 typedef enum QudaFieldCreate_s { 00231 QUDA_NULL_FIELD_CREATE, // create new field 00232 QUDA_ZERO_FIELD_CREATE, // create new field and zero it 00233 QUDA_COPY_FIELD_CREATE, // create copy to field 00234 QUDA_REFERENCE_FIELD_CREATE, // create reference to field 00235 QUDA_INVALID_FIELD_CREATE = QUDA_INVALID_ENUM 00236 } QudaFieldCreate; 00237 00238 typedef enum QudaGammaBasis_s { 00239 QUDA_DEGRAND_ROSSI_GAMMA_BASIS, 00240 QUDA_UKQCD_GAMMA_BASIS, 00241 QUDA_INVALID_GAMMA_BASIS = QUDA_INVALID_ENUM 00242 } QudaGammaBasis; 00243 00244 typedef enum QudaSourceType_s { 00245 QUDA_POINT_SOURCE, 00246 QUDA_RANDOM_SOURCE, 00247 QUDA_INVALID_SOURCE = QUDA_INVALID_ENUM 00248 } QudaSourceType; 00249 00250 typedef enum QudaTwistFlavorType_s { 00251 QUDA_TWIST_MINUS = -1, 00252 QUDA_TWIST_PLUS = +1, 00253 QUDA_TWIST_NO = 0, 00254 QUDA_TWIST_INVALID = QUDA_INVALID_ENUM 00255 } QudaTwistFlavorType; 00256 00257 typedef enum QudaTwistGamma5Type_s { 00258 QUDA_TWIST_GAMMA5_DIRECT, 00259 QUDA_TWIST_GAMMA5_INVERSE, 00260 QUDA_TWIST_GAMMA5_INVALID = QUDA_INVALID_ENUM 00261 } QudaTwistGamma5Type; 00262 00263 typedef enum QudaUseInitGuess_s { 00264 QUDA_USE_INIT_GUESS_YES, 00265 QUDA_USE_INIT_GUESS_NO, 00266 QUDA_USE_INIT_GUESS_INVALID = QUDA_INVALID_ENUM 00267 } QudaUseInitGuess; 00268 00269 typedef enum QudaDirection_s { 00270 QUDA_BACKWARDS, 00271 QUDA_FORWARDS 00272 } QudaDirection; 00273 00274 typedef enum QudaComputeFatMethod_s{ 00275 QUDA_COMPUTE_FAT_STANDARD, 00276 QUDA_COMPUTE_FAT_EXTENDED_VOLUME, 00277 QUDA_COMPUTE_FAT_INVALID= QUDA_INVALID_ENUM 00278 }QudaComputeFatMethod; 00279 00280 typedef enum QudaFatLinkFlag_s{ 00281 QUDA_FAT_PRESERVE_CPU_GAUGE=1, 00282 QUDA_FAT_PRESERVE_GPU_GAUGE=2, 00283 00284 QUDA_FAT_PRESERVE_COMM_MEM=4, 00285 }QudaFatLinkFlag; 00286 00287 #ifdef __cplusplus 00288 } 00289 #endif 00290 00291 #endif // _ENUM_QUDA_H