There is a maintenance of MPCDF Gitlab on Thursday, April 22st 2020, 9:00 am CEST - Expect some service interruptions during this time

elpa_test_programs_print_headers.X90 5.56 KB
Newer Older
1 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
#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,
!    - Max-Plack-Institut für Mathematik in den Naturwissenschaftrn,
!      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
#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

#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!"
         stop
       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"
#if DATATYPE == REAL
94

95
#ifdef HAVE_AVX2
96 97

#ifdef WITH_REAL_AVX_BLOCK2_KERNEL
98
      print *,"AVX2 optimized kernel (2 blocking) for real matrices"
99 100
#endif
#ifdef WITH_REAL_AVX_BLOCK4_KERNEL
101
      print *,"AVX2 optimized kernel (4 blocking) for real matrices"
102 103
#endif
#ifdef WITH_REAL_AVX_BLOCK6_KERNEL
104
      print *,"AVX2 optimized kernel (6 blocking) for real matrices"
105 106
#endif

107
#else /* no HAVE_AVX2 */
108 109 110 111

#ifdef HAVE_AVX

#ifdef WITH_REAL_AVX_BLOCK2_KERNEL
112
      print *,"AVX optimized kernel (2 blocking) for real matrices"
113 114
#endif
#ifdef WITH_REAL_AVX_BLOCK4_KERNEL
115
      print *,"AVX optimized kernel (4 blocking) for real matrices"
116 117
#endif
#ifdef WITH_REAL_AVX_BLOCK6_KERNEL
118
      print *,"AVX optimized kernel (6 blocking) for real matrices"
119 120 121 122 123 124 125
#endif

#endif

#endif /* HAVE_AVX2 */


126 127 128 129 130 131
#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
132
#ifdef WITH_REAL_SSE_ASSEMBLY_KERNEL
133 134 135 136 137 138 139 140 141 142 143 144
     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 */

#if DATATYPE == COMPLEX
145 146 147 148 149 150 151 152 153 154

#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

155
#else /* no HAVE_AVX2 */
156 157 158

#ifdef HAVE_AVX

159 160 161 162 163 164 165
#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

166 167 168 169 170
#endif

#endif /* HAVE_AVX2 */


171 172 173 174 175 176
#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
177
#ifdef WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
178 179 180 181 182 183 184 185
     print *,"SSE ASSEMBLER kernel for complex matrices"
#endif

#endif /* DATATYPE == COMPLEX */

   endif
#endif /* ELPA1 */

186 187 188 189 190 191
   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"
192 193 194
   endif