What is ELPA?
ELPA is a Fortran/C/MPI library to solve dense hermitian (real or complex) matrices. ELPA is conceived to compute the eigenvectors and eigenvalues of large matrices in petascale computers. ELPA uses BLACS framework and some SCALAPACK functions to distribute and solve the eigen problem. Computationally intensive kernels in ELPA are optimized using intrinsic code for SSE, AVX, AVX2, AVX512, and QPX architectures. This code is popular in electronic structure codes, but it can be used for machine learning and other approaches that require full or partial spectrum solution of a matrix eigen problem. ELPA scales efficiently in Theta solving matrices of 1 million by 1 million in less than 3 hours in 3000 KNL nodes.
Using ELPA at ALCF
ALCF provides assistance with compiling the library. For questions, contact us at firstname.lastname@example.org.
How to obtain the code
ELPA can be downloaded free of charge from https://elpa.mpcdf.mpg.de/software.
Building ELPA on Theta
ELPA must be compiled with AVX512 support in Theta. ELPA has OpenMP support, but it has shown lower performance for large number of MPI ranks. Because the interface of ELPA subroutines may change among versions 2016, 2017 and 2018, we strongly suggest that users visit https://elpa.mpcdf.mpg.de/software for further information.
This is an example for the compilation of ELPA in Theta.
> cat build_elpa_theta.sh git clone https://gitlab.mpcdf.mpg.de/elpa/elpa.git cd elpa aclocal autoreconf ./configure --prefix=/soft/applications/elpa/elpa2017 \ --host=x86_64-suse-linux-gnu \ --disable-shared --enable-avx512 \ FC=ftn CC=cc \ SCALAPACK_LDFLAGS="" \ SCALAPACK_FCFLAGS="" \ FCFLAGS=”-I/opt/intel/compilers_and_libraries_2018.0.128/linux/mkl/include/intel64/lp64” make && make install