Line data Source code
1 : #if 0
2 : ! This file is part of ELPA.
3 : !
4 : ! The ELPA library was originally created by the ELPA consortium,
5 : ! consisting of the following organizations:
6 : !
7 : ! - Max Planck Computing and Data Facility (MPCDF), formerly known as
8 : ! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG),
9 : ! - Bergische Universität Wuppertal, Lehrstuhl für angewandte
10 : ! Informatik,
11 : ! - Technische Universität München, Lehrstuhl für Informatik mit
12 : ! Schwerpunkt Wissenschaftliches Rechnen ,
13 : ! - Fritz-Haber-Institut, Berlin, Abt. Theorie,
14 : ! - Max-Plack-Institut für Mathematik in den Naturwissenschaften,
15 : ! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition,
16 : ! and
17 : ! - IBM Deutschland GmbH
18 : !
19 : !
20 : ! More information can be found here:
21 : ! http://elpa.mpcdf.mpg.de/
22 : !
23 : ! ELPA is free software: you can redistribute it and/or modify
24 : ! it under the terms of the version 3 of the license of the
25 : ! GNU Lesser General Public License as published by the Free
26 : ! Software Foundation.
27 : !
28 : ! ELPA is distributed in the hope that it will be useful,
29 : ! but WITHOUT ANY WARRANTY; without even the implied warranty of
30 : ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 : ! GNU Lesser General Public License for more details.
32 : !
33 : ! You should have received a copy of the GNU Lesser General Public License
34 : ! along with ELPA. If not, see <http://www.gnu.org/licenses/>
35 : !
36 : ! ELPA reflects a substantial effort on the part of the original
37 : ! ELPA consortium, and we ask you to respect the spirit of the
38 : ! license that we chose: i.e., please contribute any changes you
39 : ! may have back to the original ELPA library distribution, and keep
40 : ! any derivatives of ELPA under the same license that we chose for
41 : ! the original distribution, the GNU Lesser General Public License.
42 : !
43 : !
44 : ! ELPA1 -- Faster replacements for ScaLAPACK symmetric eigenvalue routines
45 : !
46 : ! Copyright of the original code rests with the authors inside the ELPA
47 : ! consortium. The copyright of any additional modifications shall rest
48 : ! with their original authors, but shall adhere to the licensing terms
49 : ! distributed along with the original code in the file "COPYING".
50 : #endif
51 :
52 : #ifdef WITH_OPENMP
53 1872 : if (myid .eq. 0) then
54 1248 : print *,"Threaded version of test program"
55 1248 : print *,"Using ",omp_get_max_threads()," threads"
56 1248 : print *," "
57 : endif
58 : #endif
59 :
60 : #ifndef WITH_MPI
61 1248 : if (myid .eq. 0) then
62 1248 : print *,"This version of ELPA does not support MPI parallelisation"
63 1248 : print *,"For MPI support re-build ELPA with appropiate flags"
64 1248 : print *," "
65 : endif
66 : #endif
67 :
68 : #ifdef ELPA1
69 :
70 : #ifdef REALCASE
71 : #ifdef DOUBLE_PRECISION_REAL
72 192 : if (myid .eq. 0) then
73 128 : print *," "
74 128 : print *,"Real valued double-precision version of ELPA1 is used"
75 128 : print *," "
76 : endif
77 : #else
78 96 : if (myid .eq. 0) then
79 64 : print *," "
80 64 : print *,"Real valued single-precision version of ELPA1 is used"
81 64 : print *," "
82 : endif
83 : #endif
84 :
85 : #endif
86 :
87 : #ifdef COMPLEXCASE
88 : #ifdef DOUBLE_PRECISION_COMPLEX
89 192 : if (myid .eq. 0) then
90 128 : print *," "
91 128 : print *,"Complex valued double-precision version of ELPA1 is used"
92 128 : print *," "
93 : endif
94 : #else
95 96 : if (myid .eq. 0) then
96 64 : print *," "
97 64 : print *,"Complex valued single-precision version of ELPA1 is used"
98 64 : print *," "
99 : endif
100 : #endif
101 :
102 : #endif /* DATATYPE */
103 :
104 : #else /* ELPA1 */
105 :
106 : #ifdef REALCASE
107 : #ifdef DOUBLE_PRECISION_REAL
108 864 : if (myid .eq. 0) then
109 576 : print *," "
110 576 : print *,"Real valued double-precision version of ELPA2 is used"
111 576 : print *," "
112 : endif
113 : #else
114 432 : if (myid .eq. 0) then
115 288 : print *," "
116 288 : print *,"Real valued single-precision version of ELPA2 is used"
117 288 : print *," "
118 : endif
119 : #endif
120 :
121 : #endif
122 :
123 : #ifdef COMPLEXCASE
124 : #ifdef DOUBLE_PRECISION_COMPLEX
125 864 : if (myid .eq. 0) then
126 576 : print *," "
127 576 : print *,"Complex valued double-precision version of ELPA2 is used"
128 576 : print *," "
129 : endif
130 : #else
131 432 : if (myid .eq. 0) then
132 288 : print *," "
133 288 : print *,"Complex valued single-precision version of ELPA2 is used"
134 288 : print *," "
135 : endif
136 : #endif
137 :
138 : #endif /* DATATYPE */
139 :
140 : #endif /* ELPA1 */
141 :
142 : #ifdef WITH_MPI
143 2496 : call MPI_BARRIER(MPI_COMM_WORLD, mpierr)
144 : #endif
145 : #ifdef HAVE_REDIRECT
146 : if (check_redirect_environment_variable()) then
147 : if (myid .eq. 0) then
148 : print *," "
149 : print *,"Redirection of mpi processes is used"
150 : print *," "
151 : if (create_directories() .ne. 1) then
152 : write(error_unit,*) "Unable to create directory for stdout and stderr!"
153 : stop 1
154 : endif
155 : endif
156 : #ifdef WITH_MPI
157 : call MPI_BARRIER(MPI_COMM_WORLD, mpierr)
158 : #endif
159 : call redirect_stdout(myid)
160 : endif
161 : #endif
162 :
163 : #ifndef ELPA1
164 :
165 3168 : if (myid .eq. 0) then
166 2112 : print *," "
167 2112 : print *,"This ELPA2 is build with"
168 : #ifdef WITH_GPU_KERNEL
169 : print *,"GPU support"
170 : #endif
171 2112 : print *," "
172 : #ifdef REALCASE
173 :
174 : #ifdef HAVE_AVX2
175 :
176 : #ifdef WITH_REAL_AVX_BLOCK2_KERNEL
177 864 : print *,"AVX2 optimized kernel (2 blocking) for real matrices"
178 : #endif
179 : #ifdef WITH_REAL_AVX_BLOCK4_KERNEL
180 864 : print *,"AVX2 optimized kernel (4 blocking) for real matrices"
181 : #endif
182 : #ifdef WITH_REAL_AVX_BLOCK6_KERNEL
183 864 : print *,"AVX2 optimized kernel (6 blocking) for real matrices"
184 : #endif
185 :
186 : #else /* no HAVE_AVX2 */
187 :
188 : #ifdef HAVE_AVX
189 :
190 : #ifdef WITH_REAL_AVX_BLOCK2_KERNEL
191 : print *,"AVX optimized kernel (2 blocking) for real matrices"
192 : #endif
193 : #ifdef WITH_REAL_AVX_BLOCK4_KERNEL
194 : print *,"AVX optimized kernel (4 blocking) for real matrices"
195 : #endif
196 : #ifdef WITH_REAL_AVX_BLOCK6_KERNEL
197 : print *,"AVX optimized kernel (6 blocking) for real matrices"
198 : #endif
199 :
200 : #endif
201 :
202 : #endif /* HAVE_AVX2 */
203 :
204 :
205 : #ifdef WITH_REAL_GENERIC_KERNEL
206 864 : print *,"GENERIC kernel for real matrices"
207 : #endif
208 : #ifdef WITH_REAL_GENERIC_SIMPLE_KERNEL
209 864 : print *,"GENERIC SIMPLE kernel for real matrices"
210 : #endif
211 : #ifdef WITH_REAL_SSE_ASSEMBLY_KERNEL
212 864 : print *,"SSE ASSEMBLER kernel for real matrices"
213 : #endif
214 : #ifdef WITH_REAL_BGP_KERNEL
215 : print *,"BGP kernel for real matrices"
216 : #endif
217 : #ifdef WITH_REAL_BGQ_KERNEL
218 : print *,"BGQ kernel for real matrices"
219 : #endif
220 :
221 : #endif /* DATATYPE == REAL */
222 :
223 : #ifdef COMPLEXCASE
224 :
225 : #ifdef HAVE_AVX2
226 :
227 : #ifdef WITH_COMPLEX_AVX_BLOCK2_KERNEL
228 864 : print *,"AVX2 optimized kernel (2 blocking) for complex matrices"
229 : #endif
230 : #ifdef WITH_COMPLEX_AVX_BLOCK1_KERNEL
231 864 : print *,"AVX2 optimized kernel (1 blocking) for complex matrices"
232 : #endif
233 :
234 : #else /* no HAVE_AVX2 */
235 :
236 : #ifdef HAVE_AVX
237 :
238 : #ifdef WITH_COMPLEX_AVX_BLOCK2_KERNEL
239 : print *,"AVX optimized kernel (2 blocking) for complex matrices"
240 : #endif
241 : #ifdef WITH_COMPLEX_AVX_BLOCK1_KERNEL
242 : print *,"AVX optimized kernel (1 blocking) for complex matrices"
243 : #endif
244 :
245 : #endif
246 :
247 : #endif /* HAVE_AVX2 */
248 :
249 :
250 : #ifdef WITH_COMPLEX_GENERIC_KERNEL
251 864 : print *,"GENERIC kernel for complex matrices"
252 : #endif
253 : #ifdef WITH_COMPLEX_GENERIC_SIMPLE_KERNEL
254 864 : print *,"GENERIC SIMPLE kernel for complex matrices"
255 : #endif
256 : #ifdef WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
257 864 : print *,"SSE ASSEMBLER kernel for complex matrices"
258 : #endif
259 :
260 : #endif /* DATATYPE == COMPLEX */
261 :
262 : endif
263 : #endif /* ELPA1 */
264 :
265 3744 : if (write_to_file%eigenvectors) then
266 0 : if (myid .eq. 0) print *,"Writing Eigenvectors to files"
267 : endif
268 :
269 3744 : if (write_to_file%eigenvalues) then
270 0 : if (myid .eq. 0) print *,"Writing Eigenvalues to files"
271 : endif
272 :
273 :
|