2.4 Libraries
Keywords: user_guide

Next: 2.5 Libxc library Up: 2 Installation Previous: 2.3 configure Contents
Subsections

- - 2.4.0.1 BLAS and LAPACK
  - 2.4.0.2 FFT
  - 2.4.0.3 MPI libraries
  - 2.4.0.4 Libraries for accelerators
  - 2.4.0.5 HDF5
  - 2.4.0.6 Other libraries
  - 2.4.0.7 If optimized libraries are not found

##
2.4 Libraries

QUANTUM ESPRESSO contains a copy of some needed external libraries:

- iotk and FoX for reading and writing xml files;
- 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.

Optimized vendor-specific libraries often yield huge performance gains with respect to compiled libraries and should be used whenever possible. `configure` always try to locate the best mathematical libraries.

#### 2.4.0.1 BLAS and LAPACK

QUANTUM ESPRESSO can use any architecture-optimized BLAS and LAPACK replacements, like those contained e.g. in the MKL for Intel and AMD CPUs, or ESSL for IBM Power machines.

If no optimized libraries are available, one may try the ATLAS library: `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/`.

#### 2.4.0.2 FFT

The FFTXlib of QUANTUM ESPRESSO contains a 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 (obsolete?),
- `-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).

#### 2.4.0.3 MPI libraries

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.2.8.3.

Note: since v.6.1, MPI libraries implementing v.3 of the standard (notably, non-blocking broadcast and gather operations) are required.

#### 2.4.0.4 Libraries for accelerators

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`.

#### 2.4.0.5 HDF5

The HDF5 library (`https://www.hdfgroup.org/downloads/hdf5/`), v.1.8.16 or later, can be used to perform binary I/O using the HDF5 format.

If compiling the HDF5 library from sources, attention must be paid to pass options `–enable-fortran`, `–enable-fortran2003`, and `–enable-parallel` (see below), to the `configure` script of `HDF5` (not of QUANTUM ESPRESSO).

To use HDF5 is usually sufficient to specify the path to the fortran compiler wrapper for HDF5 (`h5fc` of `h5pfc` with the `–with-hdf5=` option of configure. If the wrapper is in the default path, just use `–with-hdf5=yes`. The configure script is usually able to extract the linker options and the include directory path from the output of the wrapper. If it fails, the user can provide configure options `–with-hdf5-libs=<options>` and `–with-hdf5-include=<path>` for the linker options and include path respectively. These options are often needed when using the HDF5 packages provided by many LINUX distributions. In this case you may first try the `–with-hdf5=yes` option. If it fails, just type command `h5fc –show` (or `h5pfc` if you are using parallel HDF5): the command will print out the linker and include options to be passed manually to the configure script.

The configure script is able to determine whether one is linking to a serial or parallel HDF5 library, and will set the flag `-D__HDF5_SERIAL` in the `make.inc` file accordingly.

#### 2.4.0.6 Other libraries

QUANTUM ESPRESSO can use the MASS vector math library from IBM, if available (only on machines with XLF compiler: likely obsolete).

#### 2.4.0.7 If optimized libraries are not found

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 Libxc library Up: 2 Installation Previous: 2.3 configure Contents