Makefile.am 31 KB
Newer Older
1
## Process this file with automake to produce Makefile.in
2

3
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
4

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
5
AM_FCFLAGS = $(SCALAPACK_FCFLAGS) $(FC_MODINC)modules
6
AM_LDFLAGS = $(SCALAPACK_LDFLAGS)
7

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
8
9
FCLD = @ACTUAL_FC@

10
# libelpa
11
12
13
14
lib_LTLIBRARIES = libelpa@SUFFIX@.la
libelpa@SUFFIX@_la_LINK = $(FCLINK) $(AM_LDFLAGS) -version-info $(ELPA_SO_VERSION)
libelpa@SUFFIX@_la_LIBADD = libelpa@SUFFIX@_public.la libelpa@SUFFIX@_private.la
libelpa@SUFFIX@_la_SOURCES =
15

16
17
# parts with public interface
noinst_LTLIBRARIES = libelpa@SUFFIX@_public.la
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
18
libelpa@SUFFIX@_public_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)modules $(FC_MODINC)private_modules
19
libelpa@SUFFIX@_public_la_SOURCES = \
20
21
  src/elpa.F90 \
  src/elpa_api.F90 \
22
  src/elpa_constants.F90
23
24
25

if ENABLE_LEGACY
libelpa@SUFFIX@_public_la_SOURCES += \
26
  src/elpa_driver/legacy_interface/elpa.F90 \
27
  src/elpa1/legacy_interface/elpa1.F90 \
28
29
  src/elpa2/legacy_interface/elpa2.F90 \
  src/elpa2/legacy_interface/elpa2_utilities.F90 \
30
  src/elpa1/legacy_interface/elpa1_auxiliary.F90
31
endif
32
33
34

# internal parts
noinst_LTLIBRARIES += libelpa@SUFFIX@_private.la
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
35
libelpa@SUFFIX@_private_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
36
libelpa@SUFFIX@_private_la_SOURCES = \
37
  src/elpa_impl.F90 \
38
  src/elpa_autotune_impl.F90 \
39
  src/elpa_abstract_impl.F90 \
40
41
42
43
44
45
46
47
48
  src/helpers/mod_precision.F90 \
  src/helpers/mod_mpi.F90 \
  src/helpers/mod_mpi_stubs.F90 \
  src/elpa_generated_fortran_interfaces.F90 \
  src/elpa2/mod_redist_band.F90 \
  src/elpa2/mod_pack_unpack_cpu.F90 \
  src/elpa2/mod_compute_hh_trafo.F90 \
  src/helpers/aligned_mem.F90 \
  src/elpa1/elpa1_compute_private.F90 \
49
  src/elpa1/elpa1_auxiliary.F90 \
50
51
52
53
54
55
56
57
58
59
60
61
62
  src/elpa2/elpa2_determine_workload.F90 \
  src/elpa2/elpa2_compute.F90 \
  src/elpa2/kernels/mod_single_hh_trafo_real.F90 \
  src/GPU/check_for_gpu.F90 \
  src/GPU/mod_cuda.F90 \
  src/elpa2/GPU/interface_c_kernel.F90 \
  src/elpa2/mod_pack_unpack_gpu.F90 \
  src/elpa2/qr/qr_utils.F90 \
  src/elpa2/qr/elpa_qrkernels.F90 \
  src/elpa2/qr/elpa_pdlarfb.F90 \
  src/elpa2/qr/elpa_pdgeqrf.F90 \
  src/elpa1/elpa1.F90 \
  src/elpa2/elpa2.F90 \
63
  src/elpa_generalized/cannon.c \
64
  #src/elpa_generalized/test_c_bindings.c \
65
  src/helpers/matrix_plot.F90 \
66
67
  src/elpa_index.c

Andreas Marek's avatar
Andreas Marek committed
68
69
70
libelpa@SUFFIX@_private_la_SOURCES += src/elpa_c_interface.c 


71
72
73
74
75
76
77
78
79
80
# elpa_utilities.F90 is private in new API, public in legacy
if ENABLE_LEGACY
libelpa@SUFFIX@_public_la_SOURCES += \
  src/general/elpa_utilities.F90
else
libelpa@SUFFIX@_private_la_SOURCES += \
  src/general/elpa_utilities.F90
endif


81
82
if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
83
  src/elpa_driver/legacy_interface/elpa_driver_c_interface.F90 \
84
  src/elpa1/legacy_interface/elpa_1stage_c_interface.F90 \
85
  src/elpa2/legacy_interface/elpa_2stage_c_interface.F90
86
endif
87

88
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
89
90
  src/elpa1/elpa_reduce_add_vectors.F90 \
  src/elpa1/elpa_transpose_vectors.F90 \
Andreas Marek's avatar
Andreas Marek committed
91
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
92
93
  src/elpa_impl_math_template.F90 \
  src/elpa_impl_generalized_transform_template.F90 \
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  src/elpa1/elpa1_compute_template.F90 \
  src/elpa2/elpa2_compute_real_template.F90 \
  src/elpa2/elpa2_compute_complex_template.F90 \
  src/elpa1/elpa1_template.F90 \
  src/elpa2/elpa2_template.F90 \
  src/elpa2/qr/qr_utils_template.F90 \
  src/elpa2/qr/elpa_pdlarfb_template.F90 \
  src/elpa2/qr/elpa_pdgeqrf_template.F90 \
  src/elpa2/elpa2_bandred_template.F90 \
  src/elpa2/elpa2_symm_matrix_allreduce_real_template.F90 \
  src/elpa2/elpa2_trans_ev_band_to_full_template.F90 \
  src/elpa2/elpa2_tridiag_band_template.F90 \
  src/elpa2/elpa2_trans_ev_tridi_to_band_template.F90 \
  src/elpa2/elpa2_herm_matrix_allreduce_complex_template.F90 \
  src/elpa2/kernels/real_template.F90 \
  src/elpa2/kernels/complex_template.F90 \
  src/elpa2/kernels/simple_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
111
  src/elpa2/kernels/simple_block4_template.F90 \
112
113
114
115
116
117
118
119
120
  src/elpa2/pack_unpack_cpu.F90 \
  src/elpa2/pack_unpack_gpu.F90 \
  src/elpa2/compute_hh_trafo.F90 \
  src/elpa2/redist_band.F90 \
  src/general/sanity.F90 \
  src/elpa1/elpa_cholesky_template.F90 \
  src/elpa1/elpa_invert_trm.F90 \
  src/elpa1/elpa_multiply_a_b.F90 \
  src/elpa1/elpa_solve_tridi_impl_public.F90 \
121
  src/general/precision_macros.h \
122
  src/general/precision_typedefs.h \
123
  src/general/precision_kinds.F90
124

125
126
if ENABLE_LEGACY
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES += \
127
128
129
130
131
132
133
134
135
136
137
138
139
140
  src/elpa1/legacy_interface/elpa1_template.F90 \
  src/elpa2/legacy_interface/elpa2_template.F90 \
  src/elpa1/legacy_interface/elpa1_c_interface_template.F90 \
  src/elpa2/legacy_interface/elpa2_c_interface_template.F90 \
  src/elpa_driver/legacy_interface/elpa_driver_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_at_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_ah_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm.F90 \
  src/elpa1/legacy_interface/elpa_multiply_a_b.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi.F90
141
endif
142

143
if HAVE_DETAILED_TIMINGS
144
145
146
147
148
149
150
151
152
libelpa@SUFFIX@_private_la_SOURCES += \
  src/ftimings/ftimings.F90 \
  src/ftimings/ftimings_type.F90 \
  src/ftimings/ftimings_value.F90 \
  src/ftimings/highwater_mark.c \
  src/ftimings/resident_set_size.c \
  src/ftimings/time.c \
  src/ftimings/virtual_memory.c \
  src/ftimings/papi.c
153
154
155
156
157
158

if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
  src/helpers/timer.F90
endif

159
else
160
161
libelpa@SUFFIX@_private_la_SOURCES += \
  src/helpers/timer_dummy.F90
162
163
endif

164
if WITH_GPU_VERSION
Andreas Marek's avatar
Andreas Marek committed
165
  libelpa@SUFFIX@_private_la_SOURCES +=  src/GPU/cudaFunctions.cu src/GPU/cuUtils.cu src/elpa2/GPU/ev_tridi_band_gpu_c_v2.cu
166
  EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES +=   src/elpa2/GPU/ev_tridi_band_gpu_c_v2_complex_template.cu src/elpa2/GPU/ev_tridi_band_gpu_c_v2_real_template.cu
167
168
endif

169
if !WITH_MPI
170
  libelpa@SUFFIX@_private_la_SOURCES += src/helpers/mod_time_c.F90
171
if !HAVE_DETAILED_TIMINGS
172
  libelpa@SUFFIX@_private_la_SOURCES += src/ftimings/time.c
173
174
175
endif
endif

Andreas Marek's avatar
Andreas Marek committed
176
if WITH_REAL_GENERIC_KERNEL
Andreas Marek's avatar
Andreas Marek committed
177
  libelpa@SUFFIX@_private_la_SOURCES +=  src/elpa2/kernels/real.F90
178
179
endif

Andreas Marek's avatar
Andreas Marek committed
180
if WITH_COMPLEX_GENERIC_KERNEL
Andreas Marek's avatar
Andreas Marek committed
181
  libelpa@SUFFIX@_private_la_SOURCES +=  src/elpa2/kernels/complex.F90
182
183
endif

Andreas Marek's avatar
Andreas Marek committed
184
if WITH_REAL_GENERIC_SIMPLE_KERNEL
Andreas Marek's avatar
Andreas Marek committed
185
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_simple.F90
186
187
endif

Andreas Marek's avatar
Andreas Marek committed
188
if WITH_COMPLEX_GENERIC_SIMPLE_KERNEL
Andreas Marek's avatar
Andreas Marek committed
189
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_simple.F90
190
191
endif

Andreas Marek's avatar
Andreas Marek committed
192
193
194
195
if WITH_REAL_GENERIC_SIMPLE_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_simple_block4.F90
endif

Andreas Marek's avatar
Andreas Marek committed
196
197
198
#if WITH_REAL_GENERIC_SIMPLE_BLOCK6_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_simple_block6.F90
#endif
Andreas Marek's avatar
Andreas Marek committed
199
if WITH_REAL_BGP_KERNEL
Andreas Marek's avatar
Andreas Marek committed
200
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_bgp.f90
201
202
endif

Andreas Marek's avatar
Andreas Marek committed
203
if WITH_REAL_BGQ_KERNEL
Andreas Marek's avatar
Andreas Marek committed
204
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_bgq.f90
205
206
endif

207
if WITH_REAL_SSE_ASSEMBLY_KERNEL
Andreas Marek's avatar
Andreas Marek committed
208
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_double_precision.s
209
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
210
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_single_precision.s
211
endif
212

Andreas Marek's avatar
Andreas Marek committed
213
else
214
if WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
Andreas Marek's avatar
Andreas Marek committed
215
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_double_precision.s
216
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
217
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_single_precision.s
218
endif
219
220
endif
endif
Andreas Marek's avatar
Andreas Marek committed
221

222
223
if WITH_REAL_SPARC64_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_2hv_double_precision.c
Andreas Marek's avatar
Andreas Marek committed
224
225
226
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_2hv_single_precision.c
#endif
227
228
endif

229
230
if WITH_REAL_VSX_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_double_precision.c
231
232
233
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_single_precision.c
endif
234
235
endif

236
if WITH_REAL_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
237
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_double_precision.c
238
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
239
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_single_precision.c
240
endif
241
242
endif

Andreas Marek's avatar
Andreas Marek committed
243
if WITH_REAL_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
244
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
245
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
246
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
247
endif
248
249
else
if WITH_REAL_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
250
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
251
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
252
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
253
endif
254
endif
255
256
endif

257
if WITH_REAL_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
258
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_double_precision.c
259
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
260
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_single_precision.c
261
endif
262
263
endif

264
265
if WITH_REAL_SPARC64_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_double_precision.c
266
267
268
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_single_precision.c
#endif
269
endif
270
271
272
273
274
275
276

if WITH_REAL_VSX_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_4hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_4hv_single_precision.c
endif
endif
277

278
if WITH_REAL_SSE_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
279
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_double_precision.c
280
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
281
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_single_precision.c
282
endif
283
284
endif

Andreas Marek's avatar
Andreas Marek committed
285
if WITH_REAL_AVX_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
286
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
287
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
288
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
289
endif
290
291
else
if WITH_REAL_AVX2_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
292
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
293
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
294
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
295
endif
296
endif
297
298
endif

299
if WITH_REAL_AVX512_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
300
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_4hv_double_precision.c
301
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
302
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_4hv_single_precision.c
303
endif
304
305
endif

306
307
if WITH_REAL_SPARC64_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_double_precision.c
308
309
310
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_single_precision.c
#endif
311
endif
312

313
314
315
316
317
318
if WITH_REAL_VSX_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_6hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_6hv_single_precision.c
endif
endif
319

320
if WITH_REAL_SSE_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
321
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_double_precision.c
322
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
323
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_single_precision.c
324
endif
325
326
endif

Andreas Marek's avatar
Andreas Marek committed
327
if WITH_REAL_AVX_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
328
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
329
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
330
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
331
endif
332
333
else
if WITH_REAL_AVX2_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
334
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
335
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
336
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
337
endif
338
endif
339
340
endif

341
if WITH_REAL_AVX512_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
342
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_6hv_double_precision.c
343
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
344
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_6hv_single_precision.c
345
endif
346
347
endif

348
349
350
351
352
353
354
355
356
357
358
359
360
#if WITH_COMPLEX_SPARC64_BLOCK1_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_1hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_1hv_single_precision.c
#endif
#endif
#
#if WITH_COMPLEX_VSX_BLOCK1_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_1hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_1hv_single_precision.c
#endif
#endif
361

362
if WITH_COMPLEX_SSE_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
363
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_double_precision.c
364
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
365
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_single_precision.c
366
endif
367
368
endif

Andreas Marek's avatar
Andreas Marek committed
369
if WITH_COMPLEX_AVX_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
370
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
371
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
372
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
373
endif
374
375
else
if WITH_COMPLEX_AVX2_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
376
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
377
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
378
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
379
endif
380
endif
381
382
endif

383
384

if WITH_COMPLEX_AVX512_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
385
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_1hv_double_precision.c
386
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
387
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_1hv_single_precision.c
388
endif
389
390
endif

391
392
393
394
395
396
397
398
399
400
401
402
403
#if WITH_COMPLEX_SPARC64_BLOCK2_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_2hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_2hv_single_precision.c
#endif
#endif
#
#if WITH_COMPLEX_VSX_BLOCK2_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_2hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_2hv_single_precision.c
#endif
#endif
404

405
if WITH_COMPLEX_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
406
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_2hv_double_precision.c
407
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
408
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_2hv_single_precision.c
409
endif
410
411
endif

Andreas Marek's avatar
Andreas Marek committed
412
if WITH_COMPLEX_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
413
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
414
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
415
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
416
endif
417
418
else
if WITH_COMPLEX_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
419
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
420
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
421
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
422
endif
423
endif
424
425
endif

426
if WITH_COMPLEX_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
427
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_2hv_double_precision.c
428
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
429
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_2hv_single_precision.c
430
endif
431
432
endif

433
# Cuda files
434
.cu.lo:
435
	NVCC="$(NVCC)" libtool --mode=compile --tag=CC $(top_srcdir)/nvcc_wrap $(NVCCFLAGS) $(LDFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/  -c $< -o $@
Andreas Marek's avatar
Andreas Marek committed
436

437
438
439
440
441
# Assembly files
LTCCASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(AM_CCASFLAGS) \
	$(CCASFLAGS)

442
443
444
include generated_headers.am
BUILT_SOURCES = $(generated_headers)

445
# install public headers and Fortran modules files in the include/ dir
446
elpa_includedir = $(includedir)/elpa@SUFFIX@-@PACKAGE_VERSION@
447
448
449
450
451
452
453
nobase_elpa_include_HEADERS = \
  $(wildcard modules/*) \
  elpa/elpa.h \
  elpa/elpa_generic.h \
  elpa/elpa_legacy.h

nobase_nodist_elpa_include_HEADERS = \
454
  elpa/elpa_version.h \
455
456
457
  elpa/elpa_constants.h \
  elpa/elpa_generated.h \
  elpa/elpa_generated_legacy.h
458

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
459
dist_man_MANS = \
Andreas Marek's avatar
Andreas Marek committed
460
  man/elpa2_print_kernels.1 \
Andreas Marek's avatar
Andreas Marek committed
461
  man/elpa_init.3 \
Andreas Marek's avatar
Andreas Marek committed
462
  man/elpa_allocate.3 \
Andreas Marek's avatar
Andreas Marek committed
463
  man/elpa_set.3 \
Andreas Marek's avatar
Andreas Marek committed
464
  man/elpa_setup.3 \
465
  man/elpa_eigenvalues.3 \
466
  man/elpa_eigenvectors.3 \
467
  man/elpa_generalized_eigenvectors.3 \
468
  man/elpa_generalized_eigenvalues.3 \
469
  man/elpa_cholesky.3 \
470
  man/elpa_invert_triangular.3 \
471
  man/elpa_solve_tridiagonal.3 \
472
  man/elpa_hermitian_multiply.3 \
Andreas Marek's avatar
Andreas Marek committed
473
  man/elpa_deallocate.3 \
474
475
  man/elpa_load_settings.3 \
  man/elpa_store_settings.3 \
Andreas Marek's avatar
Andreas Marek committed
476
477
478
479
  man/elpa_print_settings.3 \
  man/elpa_autotune_save_state.3 \
  man/elpa_autotune_load_state.3 \
  man/elpa_autotune_print_state.3 \
Andreas Marek's avatar
Andreas Marek committed
480
  man/elpa_uninit.3
481
482
483

if ENABLE_LEGACY
dist_man_MANS += \
484
485
486
487
488
489
490
491
  man/solve_evp_real_1stage_double.3 \
  man/solve_evp_complex_1stage_double.3 \
  man/solve_evp_real_2stage_double.3 \
  man/solve_evp_complex_2stage_double.3 \
  man/elpa_solve_evp_real_1stage_double.3 \
  man/elpa_solve_evp_complex_1stage_double.3 \
  man/elpa_solve_evp_real_2stage_double.3 \
  man/elpa_solve_evp_complex_2stage_double.3 \
492
  man/elpa_get_communicators.3 \
493
494
495
496
497
498
499
500
501
502
503
  man/elpa_mult_at_b_real_double.3 \
  man/elpa_mult_at_b_real_single.3 \
  man/elpa_mult_ah_b_complex_double.3 \
  man/elpa_mult_ah_b_complex_single.3 \
  man/elpa_invert_trm_real_double.3 \
  man/elpa_invert_trm_real_single.3 \
  man/elpa_invert_trm_complex_double.3 \
  man/elpa_invert_trm_complex_single.3 \
  man/elpa_solve_evp_real_double.3 \
  man/elpa_solve_evp_real_single.3 \
  man/elpa_solve_evp_complex_double.3 \
504
505
506
507
508
  man/elpa_solve_evp_complex_single.3 \
  man/elpa_autotune_setup.3 \
  man/elpa_autotune_step.3 \
  man/elpa_autotune_set_best.3 \
  man/elpa_autotune_deallocate.3
509
510
endif

Andreas Marek's avatar
Andreas Marek committed
511

512
if WANT_SINGLE_PRECISION_REAL
513
if ENABLE_LEGACY
514
515
516
517
518
dist_man_MANS += \
  man/solve_evp_real_1stage_single.3 \
  man/elpa_solve_evp_real_1stage_single.3 \
  man/elpa_solve_evp_real_2stage_single.3 \
  man/solve_evp_real_2stage_single.3
519
endif
520
endif
521
522

if WANT_SINGLE_PRECISION_COMPLEX
523
if ENABLE_LEGACY
524
525
526
527
528
529
dist_man_MANS += \
  man/solve_evp_complex_1stage_single.3 \
  man/elpa_solve_evp_complex_1stage_single.3 \
  man/elpa_solve_evp_complex_2stage_single.3 \
  man/solve_evp_complex_2stage_single.3
endif
530
endif
531

532
dist_doc_DATA = README.md USERS_GUIDE.md USERS_GUIDE_DEPRECATED_LEGACY_API.md INSTALL.md CONTRIBUTING.md LICENSE Changelog COPYING/COPYING COPYING/gpl.txt COPYING/lgpl.txt
533

534
535
# pkg-config stuff
pkgconfigdir = $(libdir)/pkgconfig
536
pkgconfig_DATA = @PKG_CONFIG_FILE@
537

538
539
# programs
bin_PROGRAMS = \
540
  elpa2_print_kernels@SUFFIX@
541

542
543
noinst_PROGRAMS =
check_SCRIPTS =
544

545
546
test_program_ldadd = libelpatest@SUFFIX@.la libelpa@SUFFIX@.la
test_program_fcflags = $(AM_FCFLAGS) $(FC_MODOUT)test_modules $(FC_MODINC)test_modules $(FC_MODINC)modules $(FC_MODINC)private_modules
547
548
549

# library with shared sources for the test files
noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
550
libelpatest@SUFFIX@_la_FCFLAGS = $(test_program_fcflags)
551
libelpatest@SUFFIX@_la_SOURCES = \
552
553
554
555
556
557
  test/shared/test_util.F90 \
  test/shared/test_read_input_parameters.F90 \
  test/shared/test_check_correctness.F90 \
  test/shared/test_setup_mpi.F90 \
  test/shared/test_blacs_infrastructure.F90 \
  test/shared/test_prepare_matrix.F90 \
558
  test/shared/test_analytic.F90 \
559
  test/shared/test_output_type.F90
Andreas Marek's avatar
Andreas Marek committed
560

561
562
563
564
565
if WITH_SCALAPACK_TESTS
libelpatest@SUFFIX@_la_SOURCES += \
  test/shared/test_scalapack.F90
endif

566
if HAVE_REDIRECT
567
libelpatest@SUFFIX@_la_SOURCES += \
568
569
  test/shared/test_redir.c \
  test/shared/test_redirect.F90
570
571
572
573
endif


elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2/elpa2_print_kernels.F90
574
elpa2_print_kernels@SUFFIX@_LDADD = libelpa@SUFFIX@.la
575
elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)modules
576

577
include test_programs.am
578

579
580
if ENABLE_LEGACY
include legacy_test_programs.am
581
582
endif

583
584
#include test_programs_manual.am

585
noinst_PROGRAMS += double_instance@SUFFIX@
586
check_SCRIPTS += double_instance@SUFFIX@_default.sh
587
double_instance@SUFFIX@_SOURCES = test/Fortran/elpa2/double_instance.F90
588
double_instance@SUFFIX@_LDADD = $(test_program_ldadd)
589
double_instance@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
590

591
noinst_PROGRAMS += real_2stage_banded@SUFFIX@
592
check_SCRIPTS += real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
593
real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_banded.F90
594
real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
595
real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
596

597
noinst_PROGRAMS += complex_2stage_banded@SUFFIX@
598
check_SCRIPTS += complex_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
599
complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_banded.F90
600
complex_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
601
complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
602
603

if WANT_SINGLE_PRECISION_REAL
604
noinst_PROGRAMS += single_real_2stage_banded@SUFFIX@
605
check_SCRIPTS += single_real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
606
single_real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_banded.F90
607
single_real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
608
single_real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
609
610
611
endif

if WANT_SINGLE_PRECISION_COMPLEX
612
noinst_PROGRAMS += single_complex_2stage_banded@SUFFIX@
613
check_SCRIPTS += single_complex_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
614
single_complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage_banded.F90
615
single_complex_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
616
single_complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
617
618
endif

619
620
621
622
623
#noinst_PROGRAMS += test_c_bindings@SUFFIX@
#check_SCRIPTS += test_c_bindings@SUFFIX@_default.sh
#test_c_bindings@SUFFIX@_SOURCES = test/Fortran/elpa_generalized/test_bindings.F90
#test_c_bindings@SUFFIX@_LDADD = $(test_program_ldadd) $(FCLIBS)
#test_c_bindings@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
624

625
626
627
628
629
#noinst_PROGRAMS += test_c_cannon@SUFFIX@
#check_SCRIPTS += test_c_cannon@SUFFIX@_default.sh
#test_c_cannon@SUFFIX@_SOURCES = test/C/elpa_generalized/test_cannon.c
#test_c_cannon@SUFFIX@_LDADD = $(test_program_ldadd) $(FCLIBS)
#test_c_cannon@SUFFIX@_CFLAGS = $(test_program_cflags)
630

631
632
# python wrapper
pyelpadir = $(pythondir)/pyelpa
633
if WITH_PYTHON
634
pyelpa_PYTHON = python/pyelpa/__init__.py python/pyelpa/distributedmatrix.py
635
pyelpa_LTLIBRARIES = wrapper.la
636
637
638
639
else
pyelpa_PYTHON =
pyelpa_LTLIBRARIES =
endif
640
nodist_wrapper_la_SOURCES = python/pyelpa/wrapper.c
641
642
wrapper_la_LDFLAGS = -module -avoid-version -shared $(AM_LDFLAGS)
wrapper_la_LIBADD = libelpa@SUFFIX@.la
643
wrapper_la_CFLAGS = $(PYTHON_INCLUDE) $(NUMPY_INCLUDE) $(AM_CFLAGS)
644

645
python/pyelpa/wrapper.c: python/pyelpa/wrapper.pyx
646
	cython $< -o $@
647

648
# test scripts
649
TASKS ?= 2
650
if WITH_MPI
651
  wrapper=$(MPI_BINARY) -n $${TASKS:-$(TASKS)}
652
else
653
  wrapper=
654
endif
655
TESTS = $(check_SCRIPTS)
656
657
658
659
660
661
%_extended.sh: %
	@echo "#!/bin/bash" > $@
	@echo 'if [ "$$CHECK_LEVEL" = "extended" ] ; then $(wrapper) ./$^ $$TEST_FLAGS ; else exit 77; fi' >> $@
	@chmod +x $@

%_default.sh: %
662
	@echo "#!/bin/bash" > $@
663
	@echo '$(wrapper)' ./$^ '$$TEST_FLAGS' >> $@
664
	@chmod +x $@
665

666
667
668
669
670
671
if WITH_PYTHON_TESTS
check_SCRIPTS += test_python.sh
endif

test_python.sh:
	@echo '#!/bin/bash' > $@
672
# this is kind of hacky... is there a better way to get wrapper.so?
673
674
675
676
	@echo 'export PYTHONPATH=./python-copy:$$PYTHONPATH' >> $@
	@echo 'cp -r $(abs_top_srcdir)/python python-copy || exit 1' >> $@
	@echo 'chmod u+rwX -R python-copy || exit 1' >> $@
	@echo 'cp .libs/wrapper.so python-copy/pyelpa/ || exit 1' >> $@
677
# the dlopen flags are needed for MKL to work properly...
678
# only in os from python 3.3 on
679
	@echo "$(wrapper) $(PYTHON) -c 'import sys, os; sys.setdlopenflags(os.RTLD_NOW | os.RTLD_GLOBAL); import pytest; sys.exit(pytest.main([\"./python-copy\", \"-p\", \"no:cacheprovider\"]))'" >> $@
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
680
	@echo 'exit_code=$$?' >> $@
681
	@echo 'rm -rf python-copy || exit 1' >> $@
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
682
	@echo 'exit $$exit_code' >> $@
683
684
	@chmod +x $@

685
686
include doxygen.am

687
CLEANFILES = \
Andreas Marek's avatar
Andreas Marek committed
688
  elpa-generated.h \
Andreas Marek's avatar
Andreas Marek committed
689
  elpa1_test* \
690
  elpa2_test*\
Andreas Marek's avatar
Andreas Marek committed
691
692
  elpa2_real* \
  elpa1_real* \
693
  elpa*.sh \
694
  test*.sh \
Andreas Marek's avatar
Andreas Marek committed
695
696
697
698
699
700
701
702
  legacy_real* \
  legacy_complex* \
  legacy_single_real* \
  legacy_single_complex* \
  single_real* \
  single_complex* \
  real* \
  complex* \
703
  double_instance* \
704
  *.i \
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
705
706
  python/pyelpa/wrapper.c \
  check_python.sh
707
708

clean-local:
709
	-rm -rf modules/* private_modules/* test_modules/* .fortran_dependencies/*
Andreas Marek's avatar
Andreas Marek committed
710
711
712
713
714
715
716
	-rm -rf test_*.sh
	-rm -rf legacy_*.sh
	-rm -rf real_2stage*.sh
	-rm -rf complex_2stage*.sh
	-rm -rf single_complex_2stage*.sh
	-rm -rf single_real_2stage*.sh
	-rm -rf double_instance_onenode*.sh
717
	-rm -rf $(generated_headers)
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
718
719
720

distclean-local:
	-rm config-f90.h
721
	-rm -rf ./src/elpa2/kernels/.deps
722
723
	-rm -rf ./src/.deps
	-rm -rf ./test/.deps
724
	-rmdir ./src/elpa2/kernels/
725
726
	-rmdir ./src
	-rmdir ./test
727
	-rmdir ./m4
728
	-rmdir modules/
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
729
	-rmdir .fortran_dependencies/
730

731
EXTRA_DIST = \
732
  elpa.spec \
733
  elpa/elpa.h \
734
  elpa/elpa_generic.h \
735
  elpa/elpa_legacy.h \
736
  fdep/fortran_dependencies.mk \
737
  fdep/fortran_dependencies.pl \
738
  manual_cpp \
739
  nvcc_wrap \
Andreas Marek's avatar
Andreas Marek committed
740
  remove_xcompiler \
741
  src/GPU/cuUtils_template.cu \
Andreas Marek's avatar
Andreas Marek committed
742
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
743
  src/elpa_impl_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
744
  src/elpa_impl_generalized_transform_template.F90 \
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
  src/elpa1/elpa1_compute_template.F90 \
  src/elpa1/elpa1_merge_systems_real_template.F90 \
  src/elpa1/elpa1_solve_tridi_real_template.F90 \
  src/elpa1/elpa1_template.F90 \
  src/elpa1/elpa1_tools_template.F90 \
  src/elpa1/elpa1_trans_ev_template.F90 \
  src/elpa1/elpa1_tridiag_template.F90 \
  src/elpa1/elpa_cholesky_template.F90 \
  src/elpa1/elpa_invert_trm.F90 \
  src/elpa1/elpa_multiply_a_b.F90 \
  src/elpa1/elpa_reduce_add_vectors.F90 \
  src/elpa1/elpa_solve_tridi_impl_public.F90 \
  src/elpa1/elpa_transpose_vectors.F90 \
  src/elpa2/GPU/ev_tridi_band_gpu_c_v2_complex_template.cu \
  src/elpa2/GPU/ev_tridi_band_gpu_c_v2_real_template.cu \
  src/elpa2/compute_hh_trafo.F90 \
  src/elpa2/elpa2_bandred_template.F90 \
  src/elpa2/elpa2_compute_complex_template.F90 \
  src/elpa2/elpa2_compute_real_template.F90 \
  src/elpa2/elpa2_herm_matrix_allreduce_complex_template.F90 \
  src/elpa2/elpa2_symm_matrix_allreduce_real_template.F90 \
  src/elpa2/elpa2_template.F90 \
  src/elpa2/elpa2_trans_ev_band_to_full_template.F90 \
  src/elpa2/elpa2_trans_ev_tridi_to_band_template.F90 \
  src/elpa2/elpa2_tridiag_band_template.F90 \
  src/elpa2/kernels/complex_avx-avx2_1hv_template.c \
  src/elpa2/kernels/complex_avx-avx2_2hv_template.c \
  src/elpa2/kernels/complex_avx512_1hv_template.c \
  src/elpa2/kernels/complex_avx512_2hv_template.c \
  src/elpa2/kernels/complex_sse_1hv_template.c \
  src/elpa2/kernels/complex_sse_2hv_template.c \
  src/elpa2/kernels/complex_template.F90 \
  src/elpa2/kernels/real_avx-avx2_2hv_template.c \
  src/elpa2/kernels/real_avx-avx2_4hv_template.c \
  src/elpa2/kernels/real_avx-avx2_6hv_template.c \
  src/elpa2/kernels/real_avx512_2hv_template.c \
  src/elpa2/kernels/real_avx512_4hv_template.c \
  src/elpa2/kernels/real_avx512_6hv_template.c \
Andreas Marek's avatar
Andreas Marek committed
783
  src/elpa2/kernels/real_vsx_2hv_template.c \
784
785
  src/elpa2/kernels/real_vsx_4hv_template.c \
  src/elpa2/kernels/real_vsx_6hv_template.c \
786
787
788
789
790
  src/elpa2/kernels/real_sse_2hv_template.c \
  src/elpa2/kernels/real_sse_4hv_template.c \
  src/elpa2/kernels/real_sse_6hv_template.c \
  src/elpa2/kernels/real_template.F90 \
  src/elpa2/kernels/simple_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
791
  src/elpa2/kernels/simple_block4_template.F90 \
792
793
794
795
796
797
798
  src/elpa2/pack_unpack_cpu.F90 \
  src/elpa2/pack_unpack_gpu.F90 \
  src/elpa2/qr/elpa_pdgeqrf_template.F90 \
  src/elpa2/qr/elpa_pdlarfb_template.F90 \
  src/elpa2/qr/elpa_qrkernels_template.F90 \
  src/elpa2/qr/qr_utils_template.F90 \
  src/elpa2/redist_band.F90 \
799
  src/elpa_generalized/cannon_forw_template.c \
800
  src/elpa_generalized/cannon_back_template.c \
801
  src/elpa_index.h \
802
  src/fortran_constants.h \
803
804
  src/general/map_global_to_local.F90 \
  src/general/precision_macros.h \
805
  src/general/precision_typedefs.h \
806
  src/general/precision_kinds.F90 \
807
808
809
810
811
812
  src/general/prow_pcol.F90 \
  src/general/sanity.F90 \
  test/Fortran/assert.h \
  test/Fortran/elpa_print_headers.F90 \
  test/shared/test_check_correctness_template.F90 \
  test/shared/test_prepare_matrix_template.F90 \
Pavel Kus's avatar
Pavel Kus committed
813
  test/shared/test_analytic_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
814
815
816
817
818
819
  test_project_1stage/Makefile.am \
  test_project_1stage/autogen.sh \
  test_project_1stage/configure.ac \
  test_project_1stage/fdep \
  test_project_1stage/m4 \
  test_project_1stage/src/test_real.F90 \
820
821
822
823
824
  test_project_2stage/Makefile.am \
  test_project_2stage/autogen.sh \
  test_project_2stage/configure.ac \
  test_project_2stage/fdep \
  test_project_2stage/m4 \
Pavel Kus's avatar
Pavel Kus committed
825
826
827
828
829
830
831
  test_project_2stage/src/test_real2.F90 \
  test_project_C/Makefile.am \
  test_project_C/autogen.sh \
  test_project_C/configure.ac \
  test_project_C/fdep \
  test_project_C/m4 \
  test_project_C/src/test_real.c \
832
  test_project_C/src/test_blacs_infrastructure.F90\
Andreas Marek's avatar
Andreas Marek committed
833
834
835
836
837
838
839
840
841
842
843
844
  test_project_1stage_legacy_api/Makefile.am \
  test_project_1stage_legacy_api/autogen.sh \
  test_project_1stage_legacy_api/configure.ac \
  test_project_1stage_legacy_api/fdep \
  test_project_1stage_legacy_api/m4 \
  test_project_1stage_legacy_api/src/test_real.F90 \
  test_project_2stage_legacy_api/Makefile.am \
  test_project_2stage_legacy_api/autogen.sh \
  test_project_2stage_legacy_api/configure.ac \
  test_project_2stage_legacy_api/fdep \
  test_project_2stage_legacy_api/m4 \
  test_project_2stage_legacy_api/src/test_real2.F90
845

846
847
if ENABLE_LEGACY
EXTRA_DIST += \
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
  src/elpa1/elpa1_solve_tridi_real_template.F90 \
  src/elpa1/legacy_interface/elpa1_template.F90 \
  src/elpa2/legacy_interface/elpa2_template.F90 \
  src/elpa1/legacy_interface/elpa1_c_interface_template.F90 \
  src/elpa2/legacy_interface/elpa2_c_interface_template.F90 \
  src/elpa_driver/legacy_interface/elpa_driver_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_at_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_ah_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm.F90 \
  src/elpa1/legacy_interface/elpa_multiply_a_b.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi.F90
863
endif
864

Pavel Kus's avatar
Pavel Kus committed
865
866
867
868
869
if WITH_SCALAPACK_TESTS
EXTRA_DIST += \
  test/shared/test_scalapack_template.F90
endif

870
# python wrapper files
871
872
EXTRA_DIST += python/pyelpa/__init__.py \
	      python/pyelpa/distributedmatrix.py \
873
874
875
876
877
	      python/pyelpa/wrapper.pyx \
	      python/tests/test_elpa_import.py \
	      python/tests/test_mpi4py.py \
	      python/tests/test_numroc.py \
	      python/tests/test_with_mpi.py
878

879
880
881
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
	$(SHELL) ./config.status libtool
882

883

884
@FORTRAN_MODULE_DEPS@
885
886
887
888
889

# Fortran module dependencies only work within each target,
# specify that the test programs need a finished library before
# one can compile them

890
# $1  Object name
891
define require_elpa_lib
892
$1: libelpa@SUFFIX@.la
893
894

endef
895
$(foreach p,$(bin_PROGRAMS) $(noinst_PROGRAMS),$(foreach o,$($p_OBJECTS),$(eval $(call require_elpa_lib,$o))))