2.4 Libraries
Keywords: user_guide

Next: 2.5 Compilation 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 Other libraries
  - 2.4.0.5 If optimized libraries are not found

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

#### 2.4.0.1 BLAS and LAPACK

QUANTUM ESPRESSO can use the following architecture-specific replacements for BLAS and LAPACK:

> MKL for Intel Linux PCs
> ACML for AMD Linux PCs
> ESSL for IBM machines
> SCSL for SGI Altix
> SUNperf for Sun

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

#### 2.4.0.2 FFT

QUANTUM ESPRESSO has an internal copy of an old FFTW version, and it can use the following vendor-specific FFT libraries:

> IBM ESSL
> SGI SCSL
> SUN sunperf
> NEC ASL

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

If you have recent versions (v.10 or later) of MKL installed, you may use the FFTW3 interface provided with MKL. This can be directly linked in MKL distributed with v.12 of the Intel compiler. In earlier versions, only sources are distributed: you have to compile them and to modify file `make.sys` accordingly (MKL must be linked after the FFTW-MKL interface).

#### 2.4.0.3 MPI libraries

MPI libraries are usually needed for parallel execution (unless you are happy with OpenMP 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.7.6.

#### 2.4.0.4 Other libraries

QUANTUM ESPRESSO can use the MASS vector math library from IBM, if available (only on AIX).

#### 2.4.0.5 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.sys`, 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