Newer Older
1 2 3 4 5 6
How to install ELPA:

ELPA is shipped with a typical "configure" and "make" procedure. It is
recommended to use this way to install ELPA, see (A). If you do not want to 
install ELPA as library, but to include it in your source code, please refer 
Andreas Marek's avatar
Andreas Marek committed
7 8 9 10
to point (B). An example makefile "Makefile.example" can be found in ./test, 
to give some hints how this is done. Please distibute then all files of ELPA 
with your code. Please note, that usage of ELPA as described in Section (B) 
requires advanced knowledge about compilers, preprocessor flags, and optimizations.
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

(A): Installing ELPA as library with configure

The configure installation is best done in four steps

1) run configure: 
   Check the available options with "configure --help". 
   ELPA is shipped with several different versions of the
   elpa2-kernel, each optimized and tuned for a different
   architecture. Since, at the moment we do not want to
   define a default, which works but maybe with less then
   the optimal performance, it is MANDATORY that you choose
   (real and complex kernels) for your system, via the
   "--with-..." option. For hints which kernels might be best
   for you, please refer to the file 

   Please point to your blacs/scalapack installation and the
   linkline with the variables "BLACS_LDFLAGS" and "BLACS_FCFLAGS".
   "BLACS_LDFLAGS" should then contain the correct linkline for your
   blacs/scalapack installation and "BLACS_FCFLAGS" the include path
   and any other flags you need at compile time.

   It is recommended that you use the "rpath functionality" in the linkline,
   otherwise it will be necessary to update the LD_LIBRARY_PATH environment

   You can either specify your own builds of lapack/blacs/scalapack
   or use specialized Vendor packages, e.g. if available you can use 
Andreas Marek's avatar
Andreas Marek committed
44 45
   Intel's MKL. If you do not set the variables "BLACS_LDFLAGS" and 
   "BLACS_FCFLAGS" ELPA will not be build! 
46 47

   Please set the optimisation that you would like with the
Andreas Marek's avatar
Andreas Marek committed
   variable "FCFLAGS", "CFLAGS", and "CXXFLAGS", e.g. FCFLAGS="-O3 -xAVX",
49 50 51 52 53
   please see "./src/elpa2_kernels/README_elpa2_kernels.txt".

   Set the "prefix" - flag, if you wish another installation location than
   the default "/usr/local/".

Andreas Marek's avatar
Andreas Marek committed
54 55 56 57
   If you want to use the hybrid MPI/OpenMP version of ELPA please specify
   "--enable-openmp" or "--with-openmp"

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
   Note, that at the moment we do not officially support "cross compilation"
   allthough it should work.

2) run "make"

3) run "make check"
   a simple test of ELPA is done. At the moment the usage of "mpiexec"
   is required. If this is not possible at your system, you can run the
   binaries "test_real", "test_real2", "test_complex", and "test_complex2"
   yourself. At the moment the tests check whether the residual and the
   orthogonality of the found eigenvectors are lower than a threshold of
   5e-12. If this test fails, or if you believe the threshold should be
   even lower, please talk to us.

4) run "make install"
   Note that a pckconfig file for ELPA is produced. You should then be
   able to link the ELPA library to your own applications.

B) Installing ELPA without the autotools procedure
    You can find an example makefile "Makefile.example" in "./test",
    to see how you can use ELPA directly in your code, and not as library. 
    If you do so, please distibute then all files of ELPA with your code.

    However, this is not the recommended way for several reasons:
     - from the last release, ELPA has grown substantially in performance
       optimizations but also complexity. The simple "just use elpa source
       files in your code" approach is becoming more and more difficult.
    - you still have to choose an elpa2-kernel (see at (A)). Getting them
      build from hand might be tedious.
    - the file elpa2.F90 uses preprocessor defines for the different kernels.
      you will have to do this by hand, if you do not use the autotools 
93 94 95 96 97 98 99 100 101 102 103 104 105 106
    - also the test programs now use preprocessor defines, discriminating
      between version with and without OpenMP
    - it is entirely possible that due to ever growing complexity of ELPA
      in future releases the build procedure without autotools will not be 
      supported anymore

    Thus, if you really want to use ELPA this way and not with the autotools
    please ensure the following
    - make yourself familiar with the preprocessor flags you will need
      for your configuration of ELPA and define them in a file "config-f90.h"
    - adapte the Makefile.example accordingly to your needs
    Again, it is strongly encouraged to use the autotools build procedure!
107 108 109 110 111 112 113 114 115

How to use ELPA:
Using ELPA should be quite simple. It is similiar to ScalaPack but the API
is different. See the examples in the directory "./test". There is shown how
to evoke ELPA from a Fortran code.

If you installed ELPA with the build procedure a pk-config file is produced,
which will tell you how to link against ELPA.