Clarify INSTALL document authored by Andreas Marek's avatar Andreas Marek
...@@ -18,9 +18,9 @@ If you want to build (or have to since no packages are available) *ELPA* yoursel ...@@ -18,9 +18,9 @@ If you want to build (or have to since no packages are available) *ELPA* yoursel
please note that *ELPA* is shipped with a typical "configure" and "make" please note that *ELPA* is shipped with a typical "configure" and "make"
autotools procedure. This is the **only supported way** how to build and install *ELPA*. autotools procedure. This is the **only supported way** how to build and install *ELPA*.
If you obtained *ELPA* from the official git repository, you will not find If you obtained *ELPA* from the official git repository, you will not find
the needed configure script! Please look at the "**INSTALL_FROM_GIT_VERSION**" file the needed configure script! You will have to create the configure scipt with autoconf.
for the documentation how to proceed.
## (A): Installing *ELPA* as library with configure ## ## (A): Installing *ELPA* as library with configure ##
...@@ -35,50 +35,35 @@ Please look at configure --help for all available options. ...@@ -35,50 +35,35 @@ Please look at configure --help for all available options.
An excerpt of the most important (*ELPA* specific) options reads as follows: An excerpt of the most important (*ELPA* specific) options reads as follows:
--disable-legacy do not build legacy API, default yes | configure option | description |
--enable-openmp use OpenMP threading, default no. |:------------------------------------ |:----------------------------------------------------- |
--enable-redirect for test programs, allow redirection of | --disable-legacy | do not build legacy API, will be build as default |
stdout/stderr per MPI taks in a file (useful for | --enable-openmp | use OpenMP threading, default no. |
timing), default no. | --enable-redirect | for ELPA test programs, allow redirection of <br> stdout/stderr per MPI taks in a file <br> (useful for timing), default no. |
--enable-single-precision | --enable-single-precision | build with single precision version |
build with single precision | --disable-timings | more detailed timing, default yes <br> **If disabled some features like autotune will <br> not work anymmore !** |
--disable-timings more detailed timing, default yes | --disable-band-to-full-blocking | build ELPA2 with blocking in band_to_full <br> (default:enabled) |
--disable-band-to-full-blocking | --disable-mpi-module | do not use the Fortran MPI module, <br> get interfaces by 'include "mpif.h') |
build ELPA2 with blocking in band_to_full (default: | --disable-generic | do not build GENERIC kernels, default: enabled |
enabled) | --disable-sse | do not build SSE kernels, default: enabled |
--disable-mpi-module do not use the Fortran MPI module, get interfaces by | --disable-sse-assembly | do not build SSE_ASSEMBLY kernels, default: enabled |
'include "mpif.h') | --disable-avx | do not build AVX kernels, default: enabled |
--disable-generic do not build GENERIC kernels, default: enabled | --disable-avx2 | do not build AVX2 kernels, default: enabled |
--disable-sse do not build SSE kernels, default: enabled | --enable-avx512 | build AVX512 kernels, default: disabled |
--disable-sse-assembly do not build SSE_ASSEMBLY kernels, default: enabled | --enable-gpu | build GPU kernels, default: disabled |
--disable-avx do not build AVX kernels, default: enabled | --enable-bgp | build BGP kernels, default: disabled |
--disable-avx2 do not build AVX2 kernels, default: enabled | --enable-bgq | build BGQ kernels, default: disabled |
--enable-avx512 build AVX512 kernels, default: disabled | --with-mpi=[yes|no] | compile with MPI. Default: yes |
--enable-gpu build GPU kernels, default: disabled | --with-cuda-path=PATH | prefix where CUDA is installed [default=auto] |
--enable-bgp build BGP kernels, default: disabled | --with-cuda-sdk-path=PATH | prefix where CUDA SDK is installed [default=auto] |
--enable-bgq build BGQ kernels, default: disabled | --with-GPU-compute-capability=VALUE | use compute capability VALUE for GPU version, <br> default: "sm_35" |
--with-mpi=[yes|no] compile with MPI. Default: yes | --with-fixed-real-kernel=KERNEL | compile with only a single specific real kernel. |
--with-cuda-path=PATH prefix where CUDA is installed [default=auto] | --with-fixed-complex-kernel=KERNEL | compile with only a single specific complex kernel. |
--with-cuda-sdk-path=PATH | --with-gpu-support-only | Compile and always use the GPU version |
prefix where CUDA SDK is installed [default=auto] | --enable-scalapack-tests | build SCALAPACK test cases for performance <br> omparison, needs MPI, default no. |
--with-GPU-compute-capability=VALUE | --enable-autotuning | enables autotuning functionality, default yes |
use compute capability VALUE for GPU version, | --enable-c-tests | enables the C tests for elpa, default yes |
default: "sm_35" | --disable-assumed-size | do NOT use assumed-size Fortran arrays. default use |
--with-fixed-real-kernel=KERNEL
compile with only a single specific real kernel.
Available kernels are: generic generic_simple
sse_block2 sse_block4 sse_block6 sse_assembly
avx_block2 avx_block4 avx_block6 avx2_block2
avx2_block4 avx2_block6 avx512_block2 avx512_block4
avx512_block6 bgp bgq
--with-fixed-complex-kernel=KERNEL
compile with only a single specific complex kernel.
Available kernels are: generic generic_simple
sse_block1 sse_block2 sse_assembly avx_block1
avx_block2 avx2_block1 avx2_block2 avx512_block1
avx512_block2 bgp bgq
--with-gpu-support-only Compile and always use the GPU version
We recommend that you do not build ELPA in its main directory but that you use it We recommend that you do not build ELPA in its main directory but that you use it
in a sub-directory: in a sub-directory:
...@@ -96,6 +81,9 @@ for the Fortran and C part. ...@@ -96,6 +81,9 @@ for the Fortran and C part.
For example sth. like this is a usual way: ./configure FCFLAGS="-O2 -mavx" CFLAGS="-O2 -mavx" For example sth. like this is a usual way: ./configure FCFLAGS="-O2 -mavx" CFLAGS="-O2 -mavx"
For details, please have a look at the documentation for the compilers of your choice. For details, please have a look at the documentation for the compilers of your choice.
**Note** that most kernels can only be build if the correct compiler flags for this kernel (e.g. AVX-512)
have been enabled.
### Choice of building with or without MPI ### ### Choice of building with or without MPI ###
...@@ -111,6 +99,8 @@ has also been build without MPI support. ...@@ -111,6 +99,8 @@ has also been build without MPI support.
If you want to build *ELPA* with MPI support, please have a look at "A) Setting of MPI compiler and libraries". If you want to build *ELPA* with MPI support, please have a look at "A) Setting of MPI compiler and libraries".
For builds without MPI support, please have a look at "B) Building *ELPA* without MPI support". For builds without MPI support, please have a look at "B) Building *ELPA* without MPI support".
**NOTE** that if *ELPA* is build without MPI support, it will be serial unless the OpenMP parallization is
explicitely enabled.
Please note, that it is absolutely supported that both versions of the *ELPA* library are build Please note, that it is absolutely supported that both versions of the *ELPA* library are build
and installed in the same directory. and installed in the same directory.
...@@ -123,11 +113,9 @@ cannot automatically found, it is recommended to set it by hand with a variable, ...@@ -123,11 +113,9 @@ cannot automatically found, it is recommended to set it by hand with a variable,
configure FC=mpif90 configure FC=mpif90
Please note, that setting a C MPI-compiler is NOT necessary, and in most cases even harmful.
In some cases, on your system different MPI libraries and compilers are installed. Then it might happen In some cases, on your system different MPI libraries and compilers are installed. Then it might happen
that during the build step an error like "no module mpi" or "cannot open module mpi" is given. that during the build step an error like "no module mpi" or "cannot open module mpi" is given.
You can disable that the *ELPA* library uses MPI modules (and instead uses MPI header files) by You can disable that the *ELPA* library uses a MPI modules (and instead uses MPI header files) by
adding adding
--disable-mpi-module --disable-mpi-module
...@@ -141,15 +129,15 @@ Please continue reading at "C) Enabling GPU support" ...@@ -141,15 +129,15 @@ Please continue reading at "C) Enabling GPU support"
If you want to build *ELPA* without MPI support, add If you want to build *ELPA* without MPI support, add
--with-mpi=0 --with-mpi=no
to your configure call. to your configure call.
You have to specify which compilers should be used with e.g., You have to specify which compilers should be used with e.g.,
configure FC=gfortran --with-mpi=0 configure FC=gfortran --with-mpi=no
DO NOT specify a MPI compiler here! **DO NOT specify a MPI compiler here!**
Note, that the installed *ELPA* library files will be suffixed with Note, that the installed *ELPA* library files will be suffixed with
"_onenode", in order to discriminate this build from possible ones with MPI. "_onenode", in order to discriminate this build from possible ones with MPI.
... ...
......