elpa_print_headers.X90 7.07 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
#if 0
!    This file is part of ELPA.
!
!    The ELPA library was originally created by the ELPA consortium,
!    consisting of the following organizations:
!
!    - Max Planck Computing and Data Facility (MPCDF), formerly known as
!      Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG),
!    - Bergische Universität Wuppertal, Lehrstuhl für angewandte
!      Informatik,
!    - Technische Universität München, Lehrstuhl für Informatik mit
!      Schwerpunkt Wissenschaftliches Rechnen ,
!    - Fritz-Haber-Institut, Berlin, Abt. Theorie,
14
!    - Max-Plack-Institut für Mathematik in den Naturwissenschaften,
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
!      Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition,
!      and
!    - IBM Deutschland GmbH
!
!
!    More information can be found here:
!    http://elpa.mpcdf.mpg.de/
!
!    ELPA is free software: you can redistribute it and/or modify
!    it under the terms of the version 3 of the license of the
!    GNU Lesser General Public License as published by the Free
!    Software Foundation.
!
!    ELPA is distributed in the hope that it will be useful,
!    but WITHOUT ANY WARRANTY; without even the implied warranty of
!    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!    GNU Lesser General Public License for more details.
!
!    You should have received a copy of the GNU Lesser General Public License
!    along with ELPA.  If not, see <http://www.gnu.org/licenses/>
!
!    ELPA reflects a substantial effort on the part of the original
!    ELPA consortium, and we ask you to respect the spirit of the
!    license that we chose: i.e., please contribute any changes you
!    may have back to the original ELPA library distribution, and keep
!    any derivatives of ELPA under the same license that we chose for
!    the original distribution, the GNU Lesser General Public License.
!
!
! ELPA1 -- Faster replacements for ScaLAPACK symmetric eigenvalue routines
!
! Copyright of the original code rests with the authors inside the ELPA
! consortium. The copyright of any additional modifications shall rest
! with their original authors, but shall adhere to the licensing terms
! distributed along with the original code in the file "COPYING".
#endif

#ifdef WITH_OPENMP
   if (myid .eq. 0) then
      print *,"Threaded version of test program"
      print *,"Using ",omp_get_max_threads()," threads"
      print *," "
   endif
#endif
59

60
61
62
63
64
65
66
67
#ifndef WITH_MPI
   if (myid .eq. 0) then
     print *,"This version of ELPA does not support MPI parallelisation"
     print *,"For MPI support re-build ELPA with appropiate flags"
     print *," "
   endif
#endif

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
#ifdef ELPA1

#ifdef REALCASE
#ifdef DOUBLE_PRECISION_REAL
   if (myid .eq. 0) then
     print *," "
     print *,"Real valued double-precision version of ELPA1 is used"
     print *," "
   endif
#else
   if (myid .eq. 0) then
     print *," "
     print *,"Real valued single-precision version of ELPA1 is used"
     print *," "
   endif
#endif

#endif

#ifdef COMPLEXCASE
#ifdef DOUBLE_PRECISION_COMPLEX
   if (myid .eq. 0) then
     print *," "
     print *,"Complex valued double-precision version of ELPA1 is used"
     print *," "
   endif
#else
   if (myid .eq. 0) then
     print *," "
     print *,"Complex valued single-precision version of ELPA1 is used"
     print *," "
   endif
#endif

#endif /* DATATYPE */

#else /* ELPA1 */

Andreas Marek's avatar
Andreas Marek committed
106
#ifdef REALCASE
107
108
109
#ifdef DOUBLE_PRECISION_REAL
   if (myid .eq. 0) then
     print *," "
110
     print *,"Real valued double-precision version of ELPA2 is used"
111
112
113
114
115
     print *," "
   endif
#else
   if (myid .eq. 0) then
     print *," "
116
     print *,"Real valued single-precision version of ELPA2 is used"
117
118
119
120
     print *," "
   endif
#endif

Andreas Marek's avatar
Andreas Marek committed
121
#endif
122

Andreas Marek's avatar
Andreas Marek committed
123
#ifdef COMPLEXCASE
124
125
126
#ifdef DOUBLE_PRECISION_COMPLEX
   if (myid .eq. 0) then
     print *," "
Andreas Marek's avatar
Andreas Marek committed
127
     print *,"Complex valued double-precision version of ELPA2 is used"
128
129
130
131
132
     print *," "
   endif
#else
   if (myid .eq. 0) then
     print *," "
Andreas Marek's avatar
Andreas Marek committed
133
     print *,"Complex valued single-precision version of ELPA2 is used"
134
135
136
     print *," "
   endif
#endif
137
138

#endif /* DATATYPE */
139

140
141
#endif /* ELPA1 */

142
143
144
145
146
147
148
149
150
151
152
#ifdef WITH_MPI
    call MPI_BARRIER(MPI_COMM_WORLD, mpierr)
#endif
#ifdef HAVE_REDIRECT
   if (check_redirect_environment_variable()) then
     if (myid .eq. 0) then
       print *," "
       print *,"Redirection of mpi processes is used"
       print *," "
       if (create_directories() .ne. 1) then
         write(error_unit,*) "Unable to create directory for stdout and stderr!"
Pavel Kus's avatar
Pavel Kus committed
153
         stop 1
154
155
156
157
158
159
160
161
162
163
164
165
166
167
       endif
     endif
#ifdef WITH_MPI
     call MPI_BARRIER(MPI_COMM_WORLD, mpierr)
#endif
     call redirect_stdout(myid)
   endif
#endif

#ifndef ELPA1

   if (myid .eq. 0) then
      print *," "
      print *,"This ELPA2 is build with"
168
169
170
171
      if (gpuAvailable) then
        print *,"GPU support"
      endif
      print *," "
Andreas Marek's avatar
Andreas Marek committed
172
#ifdef REALCASE
173

174
#ifdef HAVE_AVX2
175
176

#ifdef WITH_REAL_AVX_BLOCK2_KERNEL
177
      print *,"AVX2 optimized kernel (2 blocking) for real matrices"
178
179
#endif
#ifdef WITH_REAL_AVX_BLOCK4_KERNEL
180
      print *,"AVX2 optimized kernel (4 blocking) for real matrices"
181
182
#endif
#ifdef WITH_REAL_AVX_BLOCK6_KERNEL
183
      print *,"AVX2 optimized kernel (6 blocking) for real matrices"
184
185
#endif

186
#else /* no HAVE_AVX2 */
187
188
189

#ifdef HAVE_AVX

190
191
192
193
194
195
196
197
198
199
#ifdef WITH_REAL_AVX_BLOCK2_KERNEL
      print *,"AVX optimized kernel (2 blocking) for real matrices"
#endif
#ifdef WITH_REAL_AVX_BLOCK4_KERNEL
      print *,"AVX optimized kernel (4 blocking) for real matrices"
#endif
#ifdef WITH_REAL_AVX_BLOCK6_KERNEL
      print *,"AVX optimized kernel (6 blocking) for real matrices"
#endif

200
201
202
203
204
#endif

#endif /* HAVE_AVX2 */


205
206
207
208
209
210
#ifdef WITH_REAL_GENERIC_KERNEL
     print *,"GENERIC kernel for real matrices"
#endif
#ifdef WITH_REAL_GENERIC_SIMPLE_KERNEL
     print *,"GENERIC SIMPLE kernel for real matrices"
#endif
211
#ifdef WITH_REAL_SSE_ASSEMBLY_KERNEL
212
213
214
215
216
217
218
219
220
221
222
     print *,"SSE ASSEMBLER kernel for real matrices"
#endif
#ifdef WITH_REAL_BGP_KERNEL
     print *,"BGP kernel for real matrices"
#endif
#ifdef WITH_REAL_BGQ_KERNEL
     print *,"BGQ kernel for real matrices"
#endif

#endif /* DATATYPE == REAL */

Andreas Marek's avatar
Andreas Marek committed
223
#ifdef COMPLEXCASE
224
225
226
227
228
229
230
231
232
233

#ifdef HAVE_AVX2

#ifdef  WITH_COMPLEX_AVX_BLOCK2_KERNEL
      print *,"AVX2 optimized kernel (2 blocking) for complex matrices"
#endif
#ifdef WITH_COMPLEX_AVX_BLOCK1_KERNEL
      print *,"AVX2 optimized kernel (1 blocking) for complex matrices"
#endif

234
#else /* no HAVE_AVX2 */
235
236
237

#ifdef HAVE_AVX

238
239
240
241
242
243
244
#ifdef  WITH_COMPLEX_AVX_BLOCK2_KERNEL
      print *,"AVX optimized kernel (2 blocking) for complex matrices"
#endif
#ifdef WITH_COMPLEX_AVX_BLOCK1_KERNEL
      print *,"AVX optimized kernel (1 blocking) for complex matrices"
#endif

245
246
247
248
249
#endif

#endif /* HAVE_AVX2 */


250
251
252
253
254
255
#ifdef WITH_COMPLEX_GENERIC_KERNEL
     print *,"GENERIC kernel for complex matrices"
#endif
#ifdef WITH_COMPLEX_GENERIC_SIMPLE_KERNEL
     print *,"GENERIC SIMPLE kernel for complex matrices"
#endif
256
#ifdef WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
257
258
259
260
261
262
263
264
     print *,"SSE ASSEMBLER kernel for complex matrices"
#endif

#endif /* DATATYPE == COMPLEX */

   endif
#endif /* ELPA1 */

265
266
267
268
269
270
   if (write_to_file%eigenvectors) then
     if (myid .eq. 0) print *,"Writing Eigenvectors to files"
   endif

   if (write_to_file%eigenvalues) then
     if (myid .eq. 0) print *,"Writing Eigenvalues to files"
271
272
273
   endif