QUANTUM ESPRESSO downloads a copy of the following external libraries if needed:
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/.
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).
Note: since v.6.1, MPI libraries implementing v.3 of the standard (notably, non-blocking broadcast and gather operations) are required.
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.
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.