Next: 2.5 Compilation
Up: 2 Installation
Previous: 2.3 configure
Contents
Subsections
2.4 Libraries
QUANTUM ESPRESSO makes use of the following external libraries:
- BLAS (http://www.netlib.org/blas/) and
- LAPACK (http://www.netlib.org/lapack/) for linear algebra
- FFTW (http://www.fftw.org/) for Fast Fourier Transforms
A copy of the needed routines is provided with the distribution. However,
when available, optimized vendor-specific libraries should be used: this
often yields huge performance gains.
QUANTUM ESPRESSO can use any architecture-optimized BLAS and LAPACK replacements,
like those contained e.g. in the following libraries:
MKL for Intel CPUs
ACML for AMD CPUs
ESSL for IBM machines
If none of these is available, we suggest that you use the optimized ATLAS
library: see
http://math-atlas.sourceforge.net/. Note that ATLAS is not
a complete replacement for LAPACK: it contains all of the BLAS, plus the
LU code, plus the full storage Cholesky code. Follow the instructions in the
ATLAS distributions to produce a full LAPACK replacement.
Sergei Lisenkov reported success and good performances with optimized
BLAS by Kazushige Goto. The library is now available under an
open-source license: see the GotoBLAS2 page at
http://www.tacc.utexas.edu/tacc-software/gotoblas2/.
QUANTUM ESPRESSO has an internal copy of an old FFTW library. It also supports
the newer FFTW3 library and some vendor-specific FFT libraries.
configure will first search for vendor-specific FFT libraries;
if none is found, it will search for an external FFTW v.3 library;
if none is found, it will fall back to the internal copy of FFTW.
configure will add the appropriate preprocessing options:
- -D__LINUX_ESSL for ESSL on IBM Linux machines,
- -DASL for NEC ASL library on NEC machines,
- -D__ARM_LIB for ARM Performance library,
- -D__DFTI for DFTI (Intel MKL library),
- -D__FFTW3 for FFTW3 (external),
- -D__FFTW for FFTW (internal library),
to DFLAGS in the make.inc file.
If you edit make.inc manually, please note that one and
only one among the mentioned preprocessing option must be set.
If you have MKL libraries, you may either use the provided FFTW3
interface (v.10 and later), or directly link FFTW3 from MKL (v.12
and later) or use DFTI (recommended).
MPI libraries are usually needed for parallel execution, unless you are
happy with OpenMP-only multicore parallelization.
In well-configured machines, configure should find the appropriate
parallel compiler for you, and this should find the appropriate
libraries. Since often this doesn't
happen, especially on PC clusters, see Sec.
.
Note: since v.6.1, MPI libraries implementing v.3 of the standard
(notably, non-blocking broadcast and gather operations) are required.
The accelerated version of the code uses standard CUDA libraries such as
cublas, cufft, cusolver and the eigensolver library explicitly
developed for QUANTUM ESPRESSO by NVidia and distributed at https://github.com/NVIDIA/Eigensolver_gpu.
The HDF5 library (https://www.hdfgroup.org/downloads/hdf5/)
can be used to perform binary I/O using the HDF5 format.
The user may need to install this library, compiling it
with options -enable-fortran, -enable-fortran-2003,
and -enable-parallel (see below). These options must be passed
to the configure script of the library, not of QUANTUM ESPRESSO.
The path to the root directory of the library (the one containing bin/,
include/ and lib/ directories) has to be passed to the
configure script of QUANTUM ESPRESSO via the -with-hdf5=... option.
It is possible to use a library with disabled parallelism,
but one has to add manually the flag -D__HDF5_SERIAL
to the MANUAL_DFLAGS in the make.inc file.
The HDF5 packages provided by many LINUX distributions may also work,
but the configure script fails if includes and libraries are not placed
under the same root directory. In this case the user should manually set
the correct paths in the make.inc file.
QUANTUM ESPRESSO can use the MASS vector math
library from IBM, if available (only on machines with XLF compiler:
likely obsolete).
The configure script attempts to find optimized libraries, but may fail
if they have been installed in non-standard places. You should examine
the final value of BLAS_LIBS, LAPACK_LIBS, FFT_LIBS, MPI_LIBS (if needed),
MASS_LIBS (IBM only), either in the output of configure or in the generated
make.inc, to check whether it found all the libraries that you intend to use.
If some library was not found, you can specify a list of directories to search
in the environment variable LIBDIRS,
and rerun configure; directories in the
list must be separated by spaces. For example:
./configure LIBDIRS="/opt/intel/mkl70/lib/32 /usr/lib/math"
If this still fails, you may set some or all of the *_LIBS variables manually
and retry. For example:
./configure BLAS_LIBS="-L/usr/lib/math -lf77blas -latlas_sse"
Beware that in this case, configure will blindly accept the specified value,
and won't do any extra search.
Next: 2.5 Compilation
Up: 2 Installation
Previous: 2.3 configure
Contents