precision_macros.h 11.4 KB
Newer Older
1
#ifdef DOUBLE_PRECISION_REAL
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
#undef  elpa_transpose_vectors_real_PRECISION
#undef  elpa_reduce_add_vectors_real_PRECISION
#undef  bandred_real_PRECISION
#undef  trans_ev_band_to_full_real_PRECISION
#undef  tridiag_band_real_PRECISION
#undef  trans_ev_tridi_to_band_real_PRECISION
#undef  band_band_real_PRECISION
#undef  tridiag_real_PRECISION
#undef  trans_ev_real_PRECISION
#undef  solve_tridi_PRECISION
#undef  solve_tridi_col_PRECISION
#undef  solve_tridi_single_problem_PRECISION
#undef  qr_pdgeqrf_2dcomm_PRECISION
#undef  hh_transform_real_PRECISION
#undef  symm_matrix_allreduce_PRECISION
#undef  redist_band_real_PRECISION
#undef  unpack_row_real_cpu_PRECISION
#undef  unpack_row_real_cpu_openmp_PRECISION
#undef  unpack_and_prepare_row_group_real_gpu_PRECISION
#undef  extract_hh_tau_real_gpu_PRECISION
#undef  compute_hh_dot_products_real_gpu_PRECISION
#undef  compute_hh_trafo_real_cpu_openmp_PRECISION
#undef  compute_hh_trafo_real_cpu_PRECISION
#undef  pack_row_group_real_gpu_PRECISION
#undef  pack_row_real_cpu_openmp_PRECISION
#undef  pack_row_real_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
#undef  PRECISION_GEMV
#undef  PRECISION_TRMV
#undef  PRECISION_GEMM
#undef  PRECISION_TRMM
#undef  PRECISION_HERK
#undef  PRECISION_SYRK
#undef  PRECISION_SYMV
#undef  PRECISION_SYMM
#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
#undef  cublas_PRECISION_gemm
#undef  cublas_PRECISION_trmm
#undef  cublas_PRECISION_gemv
#undef  PRECISION_SUFFIX
#undef  CONST_0_0
#undef  CONST_0_5
#undef  CONST_1_0
#undef  CONST_2_0
#undef  CONST_8_0
#undef  size_of_PRECISION_real
#undef  MPI_REAL_PRECISION
#define  elpa_transpose_vectors_real_PRECISION elpa_transpose_vectors_real_double
#define  elpa_reduce_add_vectors_real_PRECISION elpa_reduce_add_vectors_real_double
#define  bandred_real_PRECISION bandred_real_double
#define  trans_ev_band_to_full_real_PRECISION trans_ev_band_to_full_real_double
#define  tridiag_band_real_PRECISION tridiag_band_real_double
#define  trans_ev_tridi_to_band_real_PRECISION trans_ev_tridi_to_band_real_double
#define  band_band_real_PRECISION band_band_real_double
#define  tridiag_real_PRECISION tridiag_real_double
#define  trans_ev_real_PRECISION trans_ev_real_double
#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
#define  hh_transform_real_PRECISION hh_transform_real_double
#define  symm_matrix_allreduce_PRECISION symm_matrix_allreduce_double
#define  redist_band_real_PRECISION redist_band_real_double
#define  unpack_row_real_cpu_PRECISION unpack_row_real_cpu_double
#define  unpack_row_real_cpu_openmp_PRECISION unpack_row_real_cpu_openmp_double
#define  unpack_and_prepare_row_group_real_gpu_PRECISION unpack_and_prepare_row_group_real_gpu_double
#define  extract_hh_tau_real_gpu_PRECISION extract_hh_tau_real_gpu_double
#define  compute_hh_dot_products_real_gpu_PRECISION compute_hh_dot_products_real_gpu_double
#define  compute_hh_trafo_real_cpu_openmp_PRECISION compute_hh_trafo_real_cpu_openmp_double
#define  compute_hh_trafo_real_cpu_PRECISION compute_hh_trafo_real_cpu_double
#define  pack_row_group_real_gpu_PRECISION pack_row_group_real_gpu_double
#define  pack_row_real_cpu_openmp_PRECISION pack_row_real_cpu_openmp_double
#define  pack_row_real_cpu_PRECISION pack_row_real_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
#define  PRECISION_GEMV DGEMV
#define  PRECISION_TRMV DTRMV
#define  PRECISION_GEMM DGEMM
#define  PRECISION_TRMM DTRMM
#define  PRECISION_HERK DHERK
#define  PRECISION_SYRK DSYRK
#define  PRECISION_SYMV DSYMV
#define  PRECISION_SYMM DSYMM
#define  PRECISION_SYR2 DSYR2
#define  PRECISION_SYR2K DSYR2K
#define  PRECISION_GEQRF DGEQRF
#define  PRECISION_STEDC DSTEDC
#define  PRECISION_STEQR DSTEQR
#define  PRECISION_LAMRG DLAMRG
#define  PRECISION_LAMCH DLAMCH
#define  PRECISION_LAPY2 DLAPY2
#define  PRECISION_LAED4 DLAED4
#define  PRECISION_LAED5 DLAED5
#define  cublas_PRECISION_gemm cublas_Dgemm
#define  cublas_PRECISION_trmm cublas_Dtrmm
#define  cublas_PRECISION_gemv cublas_Dgemv
#define  PRECISION_SUFFIX "_double"
#define  CONST_0_0 0.0_rk8
#define  CONST_0_5 0.5_rk8
#define  CONST_1_0 1.0_rk8
#define  CONST_2_0 2.0_rk8
#define  CONST_8_0 8.0_rk8
#define  size_of_PRECISION_real size_of_double_real_datatype
#define  MPI_REAL_PRECISION MPI_REAL8
142
#else
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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
#undef  elpa_transpose_vectors_real_PRECISION
#undef  elpa_reduce_add_vectors_real_PRECISION
#undef  bandred_real_PRECISION
#undef  trans_ev_band_to_full_real_PRECISION
#undef  tridiag_band_real_PRECISION
#undef  trans_ev_tridi_to_band_real_PRECISION
#undef  band_band_real_PRECISION
#undef  tridiag_real_PRECISION
#undef  trans_ev_real_PRECISION
#undef  solve_tridi_PRECISION
#undef  solve_tridi_col_PRECISION
#undef  solve_tridi_single_problem_PRECISION
#undef  qr_pdgeqrf_2dcomm_PRECISION
#undef  hh_transform_real_PRECISION
#undef  symm_matrix_allreduce_PRECISION
#undef  redist_band_real_PRECISION
#undef  unpack_row_real_cpu_PRECISION
#undef  unpack_row_real_cpu_openmp_PRECISION
#undef  unpack_and_prepare_row_group_real_gpu_PRECISION
#undef  extract_hh_tau_real_gpu_PRECISION
#undef  compute_hh_dot_products_real_gpu_PRECISION
#undef  compute_hh_trafo_real_cpu_openmp_PRECISION
#undef  compute_hh_trafo_real_cpu_PRECISION
#undef  pack_row_group_real_gpu_PRECISION
#undef  pack_row_real_cpu_openmp_PRECISION
#undef  pack_row_real_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
#undef  PRECISION_GEMV
#undef  PRECISION_TRMV
#undef  PRECISION_GEMM
#undef  PRECISION_TRMM
#undef  PRECISION_HERK
#undef  PRECISION_SYRK
#undef  PRECISION_SYMV
#undef  PRECISION_SYMM
#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
#undef  cublas_PRECISION_gemm
#undef  cublas_PRECISION_trmm
#undef  cublas_PRECISION_gemv
#undef  PRECISION_SUFFIX
#undef  CONST_0_0
#undef  CONST_0_5
#undef  CONST_1_0
#undef  CONST_2_0
#undef  CONST_8_0
#undef  size_of_PRECISION_real
#undef  MPI_REAL_PRECISION
#define  elpa_transpose_vectors_real_PRECISION elpa_transpose_vectors_real_single
#define  elpa_reduce_add_vectors_real_PRECISION elpa_reduce_add_vectors_real_single
#define  bandred_real_PRECISION bandred_real_single
#define  trans_ev_band_to_full_real_PRECISION trans_ev_band_to_full_real_single
#define  tridiag_band_real_PRECISION tridiag_band_real_single
#define  trans_ev_tridi_to_band_real_PRECISION trans_ev_tridi_to_band_real_single
#define  band_band_real_PRECISION band_band_real_single
#define  tridiag_real_PRECISION tridiag_real_single
#define  trans_ev_real_PRECISION trans_ev_real_single
#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
#define  hh_transform_real_PRECISION hh_transform_real_single
#define  symm_matrix_allreduce_PRECISION symm_matrix_allreduce_single
#define  redist_band_real_PRECISION redist_band_real_single
#define  unpack_row_real_cpu_PRECISION unpack_row_real_cpu_single
#define  unpack_row_real_cpu_openmp_PRECISION unpack_row_real_cpu_openmp_single
#define  unpack_and_prepare_row_group_real_gpu_PRECISION unpack_and_prepare_row_group_real_gpu_single
#define  extract_hh_tau_real_gpu_PRECISION extract_hh_tau_real_gpu_single
#define  compute_hh_dot_products_real_gpu_PRECISION compute_hh_dot_products_real_gpu_single
#define  compute_hh_trafo_real_cpu_openmp_PRECISION compute_hh_trafo_real_cpu_openmp_single
#define  compute_hh_trafo_real_cpu_PRECISION compute_hh_trafo_real_cpu_single
#define  pack_row_group_real_gpu_PRECISION pack_row_group_real_gpu_single
#define  pack_row_real_cpu_openmp_PRECISION pack_row_real_cpu_openmp_single
#define  pack_row_real_cpu_PRECISION pack_row_real_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
#define  PRECISION_GEMV SGEMV
#define  PRECISION_TRMV STRMV
#define  PRECISION_GEMM SGEMM
#define  PRECISION_TRMM STRMM
#define  PRECISION_HERK SHERK
#define  PRECISION_SYRK SSYRK
#define  PRECISION_SYMV SSYMV
#define  PRECISION_SYMM SSYMM
#define  PRECISION_SYR2 SSYR2
#define  PRECISION_SYR2K SSYR2K
#define  PRECISION_GEQRF SGEQRF
#define  PRECISION_STEDC SSTEDC
#define  PRECISION_STEQR SSTEQR
#define  PRECISION_LAMRG SLAMRG
#define  PRECISION_LAMCH SLAMCH
#define  PRECISION_LAPY2 SLAPY2
#define  PRECISION_LAED4 SLAED4
#define  PRECISION_LAED5 SLAED5
#define  cublas_PRECISION_gemm cublas_Sgemm
#define  cublas_PRECISION_trmm cublas_Strmm
#define  cublas_PRECISION_gemv cublas_Sgemv
#define  PRECISION_SUFFIX "_single"
#define  CONST_0_0 0.0_rk4
#define  CONST_0_5 0.5_rk4
#define  CONST_1_0 1.0_rk4
#define  CONST_2_0 2.0_rk4
#define  CONST_8_0 8.0_rk4
#define  size_of_PRECISION_real size_of_single_real_datatype
#define  MPI_REAL_PRECISION MPI_REAL4
283
#endif