-
Notifications
You must be signed in to change notification settings - Fork 113
Expand file tree
/
Copy pathquda_define.h.in
More file actions
249 lines (217 loc) · 6.42 KB
/
quda_define.h.in
File metadata and controls
249 lines (217 loc) · 6.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
/**
@file quda_define.h
@brief Macros defined set by the cmake build system. This file
should not be edited manually.
*/
/**
* @def __COMPUTE_CAPABILITY__
* @brief This macro sets the target GPU architecture, which is
* defined on both host and device.
*/
#define __COMPUTE_CAPABILITY__ @QUDA_COMPUTE_CAPABILITY@0
/**
* @def MAX_MULTI_BLAS_N
* @brief This macro sets the limit of blas fusion in the multi-blas
* and multi-reduce kernels
*/
#define MAX_MULTI_BLAS_N @QUDA_MAX_MULTI_BLAS_N@
/**
* @def MAX_MULTI_BLAS_N
* @brief This macro sets the limit of blas fusion in the multi-blas
* and multi-reduce kernels
*/
#define MAX_MULTI_RHS @QUDA_MAX_MULTI_RHS@
#cmakedefine QUDA_HETEROGENEOUS_ATOMIC
#ifdef QUDA_HETEROGENEOUS_ATOMIC
/**
* @def HETEROGENEOUS_ATOMIC
* @brief This macro sets whether we are compiling QUDA with heterogeneous atomic
* support enabled or not
*/
#define HETEROGENEOUS_ATOMIC
#undef QUDA_HETEROGENEOUS_ATOMIC
#endif
#cmakedefine QUDA_LARGE_KERNEL_ARG
#cmakedefine QUDA_DIRAC_CLOVER_HASENBUSCH
#ifdef QUDA_DIRAC_CLOVER_HASENBUSCH
/**
* @def GPU_CLOVER_HASENBUSCH_TWIST
* @brief This macro is set when we have clover Hasenbusch fermions enabled
*/
#define GPU_CLOVER_HASENBUSCH_TWIST
#endif
#cmakedefine QUDA_DIRAC_TWISTED_CLOVER
#if defined(QUDA_DIRAC_TWISTED_CLOVER) || defined(QUDA_DIRAC_CLOVER_HASENBUSCH)
/**
* @def GPU_TWISTED_CLOVER_DIRAC
* @brief This macro is set when we have TMC fermions enabled
*/
#define GPU_TWISTED_CLOVER_DIRAC
#endif
#cmakedefine QUDA_DIRAC_CLOVER
#if defined(QUDA_DIRAC_CLOVER) || defined(QUDA_DIRAC_TWISTED_CLOVER)
/**
* @def GPU_CLOVER_DIRAC
* @brief This macro is set when we have clover fermions enabled
*/
#define GPU_CLOVER_DIRAC
#endif
#cmakedefine QUDA_DIRAC_TWISTED_MASS
#if defined(QUDA_DIRAC_TWISTED_MASS) || defined(QUDA_DIRAC_TWISTED_CLOVER)
/**
* @def GPU_TWISTED_MASS_DIRAC
* @brief This macro is set when we have TM fermions enabled
*/
#define GPU_TWISTED_MASS_DIRAC
#endif
#cmakedefine QUDA_DIRAC_WILSON
#if defined(QUDA_DIRAC_WILSON) || defined(QUDA_DIRAC_CLOVER) || defined(QUDA_DIRAC_TWISTED_MASS)
/**
* @def GPU_WILSON_DIRAC
* @brief This macro is set when we kave Wilson fermions enabled
*/
#define GPU_WILSON_DIRAC
#endif
#cmakedefine QUDA_DIRAC_DOMAIN_WALL
#ifdef QUDA_DIRAC_DOMAIN_WALL
/**
* @def GPU_DOMAIN_WALL_DIRAC
* @brief This macro is set when we have DWF fermions enabled
*/
#define GPU_DOMAIN_WALL_DIRAC
#endif
#cmakedefine QUDA_DIRAC_STAGGERED
#ifdef QUDA_DIRAC_STAGGERED
/**
* @def GPU_STAGGERED_DIRAC
* @brief This macro is set when we have staggered fermions enabled
*/
#define GPU_STAGGERED_DIRAC
#endif
#cmakedefine QUDA_DIRAC_LAPLACE
#ifdef QUDA_DIRAC_LAPLACE
/**
* @def GPU_LAPLACE
* @brief This macro is set when we have the Laplace operator enabled
*/
#define GPU_LAPLACE
#endif
#cmakedefine QUDA_DIRAC_DISTANCE_PRECONDITIONING
#ifdef QUDA_DIRAC_DISTANCE_PRECONDITIONING
/**
* @def GPU_DISTANCE_PRECONDITIONING
* @brief This macro is set when we have distance preconditioned
* Wilson/clover dslash enabled
*/
#define GPU_DISTANCE_PRECONDITIONING
#endif
#cmakedefine QUDA_COVDEV
#ifdef QUDA_COVDEV
/**
* @def GPU_COVDEV
* @brief This macro is set when we have the covariant derivative enabled
*/
#define GPU_COVDEV
#endif
#cmakedefine QUDA_MULTIGRID
#ifdef QUDA_MULTIGRID
/**
* @def GPU_MULTIGRID
* @brief This macro is set when we have multigrid enabled
*/
#define GPU_MULTIGRID
#endif
#cmakedefine QUDA_CLOVER_DYNAMIC
#ifdef QUDA_CLOVER_DYNAMIC
/**
* @def DYNAMIC_CLOVER
* @brief This macro sets whether we are compiling QUDA with dynamic
* clover inversion support enabled or not
*/
#define DYNAMIC_CLOVER
#undef QUDA_CLOVER_DYNAMIC
#endif
#cmakedefine QUDA_CLOVER_RECONSTRUCT
#ifdef QUDA_CLOVER_RECONSTRUCT
/**
* @def RECONSTRUCT_CLOVER
* @brief This macro sets whether we are compiling QUDA with
* compressed clover storage or not
*/
#define RECONSTRUCT_CLOVER
#undef QUDA_CLOVER_RECONSTRUCT
#endif
#cmakedefine QUDA_CLOVER_CHOLESKY_PROMOTE
#ifdef QUDA_CLOVER_CHOLESKY_PROMOTE
/**
* @def CLOVER_PROMOTE_CHOLESKY
* @brief This macro sets whether we promote the internal precision of
* Cholesky decomposition used to invert the clover term
*/
#define CLOVER_PROMOTE_CHOLESKY
#undef QUDA_CLOVER_CHOLESKY_PROMOTE
#endif
#cmakedefine QUDA_MULTIGRID_DSLASH_PROMOTE
#ifdef QUDA_MULTIGRID_DSLASH_PROMOTE
/**
* @def MULTIGRID_DSLASH_PROMOTE
* @brief This macro sets whether we promote the internal precision of
* the coarse dslash used in multigrid. This enables reproducibility
* regardless of the thread granularity chosen
*/
#define MULTIGRID_DSLASH_PROMOTE
#undef QUDA_CLOVER_CHOLESKY_PROMOTE
#endif
/**
* @def QUDA_ORDER_FP
* @brief This macro sets the data ordering for Wilson, gauge
* (recon-8/9) and clover fixed-point fields
*/
#define QUDA_ORDER_FP @QUDA_ORDER_FP@
#ifdef __cplusplus
static_assert(QUDA_ORDER_FP == 4 || QUDA_ORDER_FP == 8, "invalid QUDA_ORDER_FP");
#endif
/**
* @def QUDA_ORDER_SP
* @brief This macro sets the data ordering for single-precision multigrid fields
*/
#define QUDA_ORDER_SP_MG @QUDA_ORDER_SP_MG@
#ifdef __cplusplus
static_assert(QUDA_ORDER_SP_MG == 2 || QUDA_ORDER_SP_MG == 4, "invalid QUDA_ORDER_SP_MG");
#endif
/**
* @def QUDA_ORDER_FP_MG
* @brief This macro sets the data ordering for fixed-point multigrid fields
*/
#define QUDA_ORDER_FP_MG @QUDA_ORDER_FP_MG@
#ifdef __cplusplus
static_assert(QUDA_ORDER_FP_MG == 2 || QUDA_ORDER_FP_MG == 4 || QUDA_ORDER_FP_MG == 8, "invalid QUDA_ORDER_FP_MG");
#endif
/**
* @def QUDA_BUILD_NATIVE_FFT
* @brief This macro is set by CMake if the native FFT library is used
*/
#cmakedefine QUDA_BUILD_NATIVE_FFT @QUDA_BUILD_NATIVE_FFT@
/**
* @def QUDA_TARGET_CUDA
* @brief This macro is set by CMake if the CUDA Build Target is selected
*/
#cmakedefine QUDA_TARGET_CUDA @QUDA_TARGET_CUDA@
/**
* @def QUDA_TARGET_HIP
* @brief This macro is set by CMake if the HIP Build target is selected
*/
#cmakedefine QUDA_TARGET_HIP @QUDA_TARGET_HIP@
/**
* @def QUDA_TARGET_SYCL
* @brief This macro is set by CMake if the SYCL Build target is selected
*/
#cmakedefine QUDA_TARGET_SYCL @QUDA_TARGET_SYCL@
/**
* @def QUDA_TARGET_OMPTARGET
* @brief This macro is set by CMake if the OMPTARGET Build Target is selected
*/
#cmakedefine QUDA_TARGET_OMPTARGET @QUDA_TARGET_OMPTARGET@
#if !defined(QUDA_TARGET_CUDA) && !defined(QUDA_TARGET_HIP) && !defined(QUDA_TARGET_SYCL) && !defined(QUDA_TARGET_OMPTARGET)
#error "No QUDA_TARGET selected"
#endif