precision_macros_complex.h 15.1 KB
Newer Older
1
#ifdef DOUBLE_PRECISION_COMPLEX
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
#undef  elpa_transpose_vectors_complex_PRECISION
#undef  elpa_reduce_add_vectors_complex_PRECISION
#undef  bandred_complex_PRECISION
#undef  trans_ev_band_to_full_complex_PRECISION
#undef  tridiag_band_complex_PRECISION
#undef  trans_ev_tridi_to_band_complex_PRECISION
#undef  band_band_complex_PRECISION
#undef  tridiag_complex_PRECISION
#undef  trans_ev_complex_PRECISION
#undef  solve_tridi_PRECISION
#undef  solve_tridi_col_PRECISION
#undef  solve_tridi_single_problem_PRECISION
#undef  qr_pdgeqrf_2dcomm_PRECISION
#undef  hh_transform_complex_PRECISION
#undef  symm_matrix_allreduce_PRECISION
#undef  redist_band_complex_PRECISION
#undef  unpack_row_complex_cpu_PRECISION
#undef  unpack_row_complex_cpu_openmp_PRECISION
#undef  unpack_and_prepare_row_group_complex_gpu_PRECISION
#undef  extract_hh_tau_complex_gpu_PRECISION
#undef  compute_hh_dot_products_complex_gpu_PRECISION
#undef  compute_hh_trafo_complex_cpu_openmp_PRECISION
#undef  compute_hh_trafo_complex_cpu_PRECISION
#undef  pack_row_group_complex_gpu_PRECISION
#undef  pack_row_complex_cpu_openmp_PRECISION
#undef  pack_row_complex_cpu_PRECISION
#undef  wy_gen_PRECISION
#undef  wy_right_PRECISION
#undef  wy_left_PRECISION
#undef  wy_symm_PRECISION
#undef  merge_recursive_PRECISION
#undef  merge_systems_PRECISION
#undef  distribute_global_column_PRECISION
#undef  check_monotony_PRECISION
#undef  global_gather_PRECISION
#undef  resort_ev_PRECISION
#undef  transform_columns_PRECISION
#undef  solve_secular_equation_PRECISION
#undef  global_product_PRECISION
#undef  add_tmp_PRECISION
#undef  v_add_s_PRECISION
43
44
45
46
47
48
#undef  launch_compute_hh_trafo_c_kernel_complex_PRECISION
#undef  compute_hh_trafo_complex_gpu_PRECISION
#undef  launch_my_pack_c_kernel_complex_PRECISION
#undef  launch_my_unpack_c_kernel_complex_PRECISION
#undef  launch_compute_hh_dotp_c_kernel_complex_PRECISION
#undef  launch_extract_hh_tau_c_kernel_complex_PRECISION
49
50
51
52
53
54
55
56
#undef  PRECISION_GEMV
#undef  PRECISION_TRMV
#undef  PRECISION_GEMM
#undef  PRECISION_TRMM
#undef  PRECISION_HERK
#undef  PRECISION_SYRK
#undef  PRECISION_SYMV
#undef  PRECISION_SYMM
57
58
#undef  PRECISION_HEMV
#undef  PRECISION_HER2
59
60
61
62
63
64
65
66
67
68
#undef  PRECISION_SYR2
#undef  PRECISION_SYR2K
#undef  PRECISION_GEQRF
#undef  PRECISION_STEDC
#undef  PRECISION_STEQR
#undef  PRECISION_LAMRG
#undef  PRECISION_LAMCH
#undef  PRECISION_LAPY2
#undef  PRECISION_LAED4
#undef  PRECISION_LAED5
69
70
71
#undef  cublas_PRECISION_GEMM
#undef  cublas_PRECISION_TRMM
#undef  cublas_PRECISION_GEMV
72
73
#undef  PRECISION_SUFFIX
#undef  MPI_COMPLEX_PRECISION
74
#undef  MPI_COMPLEX_EXPLICIT_PRECISION
75
76
77
78
79
80
81
#undef  MPI_REAL_PRECISION
#undef  KIND_PRECISION
#undef  PRECISION_CMPLX
#undef  PRECISION_IMAG
#undef  PRECISION_REAL
#undef  CONST_REAL_0_0
#undef  CONST_REAL_1_0
82
83
84
85
#undef  CONST_REAL_0_5
#undef  CONST_COMPLEX_PAIR_0_0
#undef  CONST_COMPLEX_PAIR_1_0
#undef  CONST_COMPLEX_PAIR_NEGATIVE_1_0
86
#undef  CONST_COMPLEX_0_0
87
#undef  CONST_COMPLEX_1_0
88
89
90
91
92
93
94
95
#undef  size_of_PRECISION_complex
#define  elpa_transpose_vectors_complex_PRECISION elpa_transpose_vectors_complex_double
#define  elpa_reduce_add_vectors_complex_PRECISION elpa_reduce_add_vectors_complex_double
#define  bandred_complex_PRECISION bandred_complex_double
#define  trans_ev_band_to_full_complex_PRECISION trans_ev_band_to_full_complex_double
#define  tridiag_band_complex_PRECISION tridiag_band_complex_double
#define  trans_ev_tridi_to_band_complex_PRECISION trans_ev_tridi_to_band_complex_double
#define  band_band_complex_PRECISION band_band_complex_double
96
97
#define  tridiag_complex_PRECISION tridiag_complex_double
#define  trans_ev_complex_PRECISION trans_ev_complex_double
98
99
100
101
#define  solve_tridi_PRECISION solve_tridi_double
#define  solve_tridi_col_PRECISION solve_tridi_col_double
#define  solve_tridi_single_problem_PRECISION solve_tridi_single_problem_double
#define  qr_pdgeqrf_2dcomm_PRECISION qr_pdgeqrf_2dcomm_double
102
#define  hh_transform_complex_PRECISION hh_transform_complex_double
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
#define  symm_matrix_allreduce_PRECISION symm_matrix_allreduce_double
#define  redist_band_complex_PRECISION redist_band_complex_double
#define  unpack_row_complex_cpu_PRECISION unpack_row_complex_cpu_double
#define  unpack_row_complex_cpu_openmp_PRECISION unpack_row_complex_cpu_openmp_double
#define  unpack_and_prepare_row_group_complex_gpu_PRECISION unpack_and_prepare_row_group_complex_gpu_double
#define  extract_hh_tau_complex_gpu_PRECISION extract_hh_tau_complex_gpu_double
#define  compute_hh_dot_products_complex_gpu_PRECISION compute_hh_dot_products_complex_gpu_double
#define  compute_hh_trafo_complex_cpu_openmp_PRECISION compute_hh_trafo_complex_cpu_openmp_double
#define  compute_hh_trafo_complex_cpu_PRECISION compute_hh_trafo_complex_cpu_double
#define  pack_row_group_complex_gpu_PRECISION pack_row_group_complex_gpu_double
#define  pack_row_complex_cpu_openmp_PRECISION pack_row_complex_cpu_openmp_double
#define  pack_row_complex_cpu_PRECISION pack_row_complex_cpu_double
#define  wy_gen_PRECISION wy_gen_double
#define  wy_right_PRECISION wy_right_double
#define  wy_left_PRECISION wy_left_double
#define  wy_symm_PRECISION wy_symm_double
#define  merge_recursive_PRECISION merge_recursive_double
#define  merge_systems_PRECISION merge_systems_double
#define  distribute_global_column_PRECISION distribute_global_column_double
#define  check_monotony_PRECISION check_monotony_double
#define  global_gather_PRECISION global_gather_double
#define  resort_ev_PRECISION resort_ev_double
#define  transform_columns_PRECISION transform_columns_double
#define  solve_secular_equation_PRECISION solve_secular_equation_double
#define  global_product_PRECISION global_product_double
#define  add_tmp_PRECISION add_tmp_double
#define  v_add_s_PRECISION v_add_s_double
130
131
132
133
134
135
#define  launch_compute_hh_trafo_c_kernel_complex_PRECISION launch_compute_hh_trafo_c_kernel_complex_double
#define  compute_hh_trafo_complex_gpu_PRECISION compute_hh_trafo_complex_gpu_double
#define  launch_my_pack_c_kernel_complex_PRECISION launch_my_pack_c_kernel_complex_double
#define  launch_my_unpack_c_kernel_complex_PRECISION launch_my_unpack_c_kernel_complex_double
#define  launch_compute_hh_dotp_c_kernel_complex_PRECISION launch_compute_hh_dotp_c_kernel_complex_double
#define  launch_extract_hh_tau_c_kernel_complex_PRECISION launch_extract_hh_tau_c_kernel_complex_double
136
137
138
139
140
#define  PRECISION_GEMV ZGEMV
#define  PRECISION_TRMV ZTRMV
#define  PRECISION_GEMM ZGEMM
#define  PRECISION_TRMM ZTRMM
#define  PRECISION_HERK ZHERK
141
142
143
#define  PRECISION_SYRK ZSYRK
#define  PRECISION_SYMV ZSYMV
#define  PRECISION_SYMM ZSYMM
144
145
#define  PRECISION_HEMV ZHEMV
#define  PRECISION_HER2 ZHER2
146
147
148
149
150
151
152
153
154
155
#define  PRECISION_SYR2 ZSYR2
#define  PRECISION_SYR2K ZSYR2K
#define  PRECISION_GEQRF ZGEQRF
#define  PRECISION_STEDC ZSTEDC
#define  PRECISION_STEQR ZSTEQR
#define  PRECISION_LAMRG ZLAMRG
#define  PRECISION_LAMCH ZLAMCH
#define  PRECISION_LAPY2 ZLAPY2
#define  PRECISION_LAED4 ZLAED4
#define  PRECISION_LAED5 ZLAED5
156
157
158
#define  cublas_PRECISION_GEMM cublas_ZGEMM
#define  cublas_PRECISION_TRMM cublas_ZTRMM
#define  cublas_PRECISION_GEMV cublas_ZGEMV
159
160
#define  PRECISION_SUFFIX "_double"
#define  MPI_COMPLEX_PRECISION MPI_DOUBLE_COMPLEX
161
#define  MPI_COMPLEX_EXPLICIT_PRECISION MPI_COMPLEX16
162
163
164
165
#define  MPI_REAL_PRECISION MPI_REAL8
#define  KIND_PRECISION rk8
#define  PRECISION_CMPLX DCMPLX
#define  PRECISION_IMAG DIMAG
166
#define  PRECISION_REAL DREAL
167
168
#define  CONST_REAL_0_0 0.0_rk8
#define  CONST_REAL_1_0 1.0_rk8
169
170
171
172
#define  CONST_REAL_0_5 0.5_rk8
#define  CONST_COMPLEX_PAIR_0_0 (0.0_rk8,0.0_rk8)
#define  CONST_COMPLEX_PAIR_1_0 (1.0_rk8,0.0_rk8)
#define  CONST_COMPLEX_PAIR_NEGATIVE_1_0 (-1.0_rk8,0.0_rk8)
173
#define  CONST_COMPLEX_0_0 0.0_ck8
174
#define  CONST_COMPLEX_1_0 1.0_ck8
175
#define  size_of_PRECISION_complex size_of_double_complex_datatype
176
#else
177
178
179
180
181
182
183
#undef  elpa_transpose_vectors_complex_PRECISION
#undef  elpa_reduce_add_vectors_complex_PRECISION
#undef  bandred_complex_PRECISION
#undef  trans_ev_band_to_full_complex_PRECISION
#undef  tridiag_band_complex_PRECISION
#undef  trans_ev_tridi_to_band_complex_PRECISION
#undef  band_band_complex_PRECISION
184
185
#undef  tridiag_complex_PRECISION
#undef  trans_ev_complex_PRECISION
186
187
188
189
#undef  solve_tridi_PRECISION
#undef  solve_tridi_col_PRECISION
#undef  solve_tridi_single_problem_PRECISION
#undef  qr_pdgeqrf_2dcomm_PRECISION
190
#undef  hh_transform_complex_PRECISION
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
#undef  symm_matrix_allreduce_PRECISION
#undef  redist_band_complex_PRECISION
#undef  unpack_row_complex_cpu_PRECISION
#undef  unpack_row_complex_cpu_openmp_PRECISION
#undef  unpack_and_prepare_row_group_complex_gpu_PRECISION
#undef  extract_hh_tau_complex_gpu_PRECISION
#undef  compute_hh_dot_products_complex_gpu_PRECISION
#undef  compute_hh_trafo_complex_cpu_openmp_PRECISION
#undef  compute_hh_trafo_complex_cpu_PRECISION
#undef  pack_row_group_complex_gpu_PRECISION
#undef  pack_row_complex_cpu_openmp_PRECISION
#undef  pack_row_complex_cpu_PRECISION
#undef  wy_gen_PRECISION
#undef  wy_right_PRECISION
#undef  wy_left_PRECISION
#undef  wy_symm_PRECISION
#undef  merge_recursive_PRECISION
#undef  merge_systems_PRECISION
#undef  distribute_global_column_PRECISION
#undef  check_monotony_PRECISION
#undef  global_gather_PRECISION
#undef  resort_ev_PRECISION
#undef  transform_columns_PRECISION
#undef  solve_secular_equation_PRECISION
#undef  global_product_PRECISION
#undef  add_tmp_PRECISION
#undef  v_add_s_PRECISION
218
219
220
221
222
223
#undef  launch_compute_hh_trafo_c_kernel_complex_PRECISION
#undef  compute_hh_trafo_complex_gpu_PRECISION
#undef  launch_my_pack_c_kernel_complex_PRECISION
#undef  launch_my_unpack_c_kernel_complex_PRECISION
#undef  launch_compute_hh_dotp_c_kernel_complex_PRECISION
#undef  launch_extract_hh_tau_c_kernel_complex_PRECISION
224
225
226
227
228
#undef  PRECISION_GEMV
#undef  PRECISION_TRMV
#undef  PRECISION_GEMM
#undef  PRECISION_TRMM
#undef  PRECISION_HERK
229
230
231
#undef  PRECISION_SYRK
#undef  PRECISION_SYMV
#undef  PRECISION_SYMM
232
233
#undef  PRECISION_HEMV
#undef  PRECISION_HER2
234
235
236
237
238
239
240
241
242
243
#undef  PRECISION_SYR2
#undef  PRECISION_SYR2K
#undef  PRECISION_GEQRF
#undef  PRECISION_STEDC
#undef  PRECISION_STEQR
#undef  PRECISION_LAMRG
#undef  PRECISION_LAMCH
#undef  PRECISION_LAPY2
#undef  PRECISION_LAED4
#undef  PRECISION_LAED5
244
245
246
#undef  cublas_PRECISION_GEMM
#undef  cublas_PRECISION_TRMM
#undef  cublas_PRECISION_GEMV
247
248
#undef  PRECISION_SUFFIX
#undef  MPI_COMPLEX_PRECISION
249
#undef  MPI_COMPLEX_EXPLICIT_PRECISION
250
251
252
253
#undef  MPI_REAL_PRECISION
#undef  KIND_PRECISION
#undef  PRECISION_CMPLX
#undef  PRECISION_IMAG
254
#undef  PRECISION_REAL
255
256
#undef  CONST_REAL_0_0
#undef  CONST_REAL_1_0
257
258
259
260
#undef  CONST_REAL_0_5
#undef  CONST_COMPLEX_PAIR_0_0
#undef  CONST_COMPLEX_PAIR_1_0
#undef  CONST_COMPLEX_PAIR_NEGATIVE_1_0
261
#undef  CONST_COMPLEX_0_0
262
#undef  CONST_COMPLEX_1_0
263
#undef  size_of_PRECISION_complex
264
265
266
267
268
269
270
#define  elpa_transpose_vectors_complex_PRECISION elpa_transpose_vectors_complex_single
#define  elpa_reduce_add_vectors_complex_PRECISION elpa_reduce_add_vectors_complex_single
#define  bandred_complex_PRECISION bandred_complex_single
#define  trans_ev_band_to_full_complex_PRECISION trans_ev_band_to_full_complex_single
#define  tridiag_band_complex_PRECISION tridiag_band_complex_single
#define  trans_ev_tridi_to_band_complex_PRECISION trans_ev_tridi_to_band_complex_single
#define  band_band_complex_PRECISION band_band_complex_single
271
272
#define  tridiag_complex_PRECISION tridiag_complex_single
#define  trans_ev_complex_PRECISION trans_ev_complex_single
273
274
275
276
#define  solve_tridi_PRECISION solve_tridi_single
#define  solve_tridi_col_PRECISION solve_tridi_col_single
#define  solve_tridi_single_problem_PRECISION solve_tridi_single_problem_single
#define  qr_pdgeqrf_2dcomm_PRECISION qr_pdgeqrf_2dcomm_single
277
#define  hh_transform_complex_PRECISION hh_transform_complex_single
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
#define  symm_matrix_allreduce_PRECISION symm_matrix_allreduce_single
#define  redist_band_complex_PRECISION redist_band_complex_single
#define  unpack_row_complex_cpu_PRECISION unpack_row_complex_cpu_single
#define  unpack_row_complex_cpu_openmp_PRECISION unpack_row_complex_cpu_openmp_single
#define  unpack_and_prepare_row_group_complex_gpu_PRECISION unpack_and_prepare_row_group_complex_gpu_single
#define  extract_hh_tau_complex_gpu_PRECISION extract_hh_tau_complex_gpu_single
#define  compute_hh_dot_products_complex_gpu_PRECISION compute_hh_dot_products_complex_gpu_single
#define  compute_hh_trafo_complex_cpu_openmp_PRECISION compute_hh_trafo_complex_cpu_openmp_single
#define  compute_hh_trafo_complex_cpu_PRECISION compute_hh_trafo_complex_cpu_single
#define  pack_row_group_complex_gpu_PRECISION pack_row_group_complex_gpu_single
#define  pack_row_complex_cpu_openmp_PRECISION pack_row_complex_cpu_openmp_single
#define  pack_row_complex_cpu_PRECISION pack_row_complex_cpu_single
#define  wy_gen_PRECISION wy_gen_single
#define  wy_right_PRECISION wy_right_single
#define  wy_left_PRECISION wy_left_single
#define  wy_symm_PRECISION wy_symm_single
#define  merge_recursive_PRECISION merge_recursive_single
#define  merge_systems_PRECISION merge_systems_single
#define  distribute_global_column_PRECISION distribute_global_column_single
#define  check_monotony_PRECISION check_monotony_single
#define  global_gather_PRECISION global_gather_single
#define  resort_ev_PRECISION resort_ev_single
#define  transform_columns_PRECISION transform_columns_single
#define  solve_secular_equation_PRECISION solve_secular_equation_single
#define  global_product_PRECISION global_product_single
#define  add_tmp_PRECISION add_tmp_single
#define  v_add_s_PRECISION v_add_s_single
305
306
307
308
309
310
#define  launch_compute_hh_trafo_c_kernel_complex_PRECISION launch_compute_hh_trafo_c_kernel_complex_single
#define  compute_hh_trafo_complex_gpu_PRECISION compute_hh_trafo_complex_gpu_single
#define  launch_my_pack_c_kernel_complex_PRECISION launch_my_pack_c_kernel_complex_single
#define  launch_my_unpack_c_kernel_complex_PRECISION launch_my_unpack_c_kernel_complex_single
#define  launch_compute_hh_dotp_c_kernel_complex_PRECISION launch_compute_hh_dotp_c_kernel_complex_single
#define  launch_extract_hh_tau_c_kernel_complex_PRECISION launch_extract_hh_tau_c_kernel_complex_single
311
312
313
314
315
#define  PRECISION_GEMV CGEMV
#define  PRECISION_TRMV CTRMV
#define  PRECISION_GEMM CGEMM
#define  PRECISION_TRMM CTRMM
#define  PRECISION_HERK CHERK
316
317
318
#define  PRECISION_SYRK CSYRK
#define  PRECISION_SYMV CSYMV
#define  PRECISION_SYMM CSYMM
319
320
#define  PRECISION_HEMV CHEMV
#define  PRECISION_HER2 CHER2
321
322
323
324
325
326
327
328
329
330
#define  PRECISION_SYR2 CSYR2
#define  PRECISION_SYR2K CSYR2K
#define  PRECISION_GEQRF CGEQRF
#define  PRECISION_STEDC CSTEDC
#define  PRECISION_STEQR CSTEQR
#define  PRECISION_LAMRG CLAMRG
#define  PRECISION_LAMCH CLAMCH
#define  PRECISION_LAPY2 CLAPY2
#define  PRECISION_LAED4 CLAED4
#define  PRECISION_LAED5 CLAED5
331
332
333
#define  cublas_PRECISION_GEMM cublas_CGEMM
#define  cublas_PRECISION_TRMM cublas_CTRMM
#define  cublas_PRECISION_GEMV cublas_CGEMV
334
335
#define  PRECISION_SUFFIX "_single"
#define  MPI_COMPLEX_PRECISION MPI_COMPLEX
336
#define  MPI_COMPLEX_EXPLICIT_PRECISION MPI_COMPLEX8
337
338
339
340
#define  MPI_REAL_PRECISION MPI_REAL4
#define  KIND_PRECISION rk4
#define  PRECISION_CMPLX CMPLX
#define  PRECISION_IMAG AIMAG
341
#define  PRECISION_REAL REAL
342
343
#define  CONST_REAL_0_0 0.0_rk4
#define  CONST_REAL_1_0 1.0_rk4
344
345
346
347
#define  CONST_REAL_0_5 0.5_rk4
#define  CONST_COMPLEX_PAIR_0_0 (0.0_rk4,0.0_rk4)
#define  CONST_COMPLEX_PAIR_1_0 (1.0_rk4,0.0_rk4)
#define  CONST_COMPLEX_PAIR_NEGATIVE_1_0 (-1.0_rk4,0.0_rk4)
348
#define  CONST_COMPLEX_0_0 0.0_ck4
349
#define  CONST_COMPLEX_1_0 1.0_ck4
350
#define  size_of_PRECISION_complex size_of_single_complex_datatype
351
#endif