next up previous contents
Next: 2.4 Libraries Up: 2 Installation Previous: 2.2 Prerequisites   Contents

Subsections

2.3 configure

To install the QUANTUM ESPRESSO source package, run the configure script. This is actually a wrapper to the true configure, located in the install/ subdirectory. configure will (try to) detect compilers and libraries available on your machine, and set up things accordingly. Presently it is expected to work on most Linux 32- and 64-bit PCs (all Intel and AMD CPUs) and PC clusters, SGI Altix, IBM SP and BlueGene machines, NEC SX, Cray XT machines, Mac OS X, MS-Windows PCs, and (for experts!) on several GPU-accelerated hardware. Detailed installation instructions for some specific HPC machines can be found in files install/README.sys, where sys is the machine name.

Instructions for the impatient:

    cd espresso-X.Y.Z/
    ./configure
     make all
This will (try to) produce parallel (MPI) executable if a proper parallel environment is detected, serial executables otherwise. For OpenMP executables, specify ./configure -enable-openmp. Symlinks to executable programs will be placed in the bin/ subdirectory. Note that both C and Fortran compilers must be in your execution path, as specified in the PATH environment variable. Additional instructions for special machines:

./configure ARCH=crayxt4 for CRAY XT machines
./configure ARCH=necsx for NEC SX machines
./configure ARCH=ppc64-mn PowerPC Linux + xlf (Marenostrum)
./configure ARCH=ppc64-bg IBM BG/P (BlueGene)

configure generates the following files:

make.inc compilation rules and flags (used by Makefile)
install/configure.msg a report of the configuration run (not needed for compilation)
install/config.log detailed log of the configuration run (may be needed for debugging)
include/fft_defs.h defines fortran variable for C pointer (used only by FFTW)
include/c_defs.h defines C to fortran calling convention
  and a few more definitions used by C files

NOTA BENE: unlike previous versions, configure no longer runs the makedeps.sh shell script that updates dependencies. If you modify the sources, run ./install/makedeps.sh or type make depend to update files make.depend in the various subdirectories.
NOTA BENE 2: ``make.inc'' used to be called ``make.sys'' until v.6.0. The change of name is due to frequent probelms with mailers assuming that whatever ends in ``sys'' is a suspect virus.

You should always be able to compile the QUANTUM ESPRESSO suite of programs without having to edit any of the generated files. However you may have to tune configure by specifying appropriate environment variables and/or command-line options. Usually the tricky part is to get external libraries recognized and used: see Sec.2.4 for details and hints.

Environment variables may be set in any of these ways:

     export VARIABLE=value; ./configure             # sh, bash, ksh
     setenv VARIABLE value; ./configure             # csh, tcsh
     ./configure VARIABLE=value                     # any shell
Some environment variables that are relevant to configure are:

ARCH label identifying the machine type (see below)
F90, F77, CC names of Fortran 90, Fortran 77, and C compilers
MPIF90 name of parallel Fortran 90 compiler (using MPI)
CPP source file preprocessor (defaults to $CC -E)
LD linker (defaults to $MPIF90)
(C,F,F90,CPP,LD)FLAGS compilation/preprocessor/loader flags
LIBDIRS extra directories where to search for libraries

For example, the following command line:

     ./configure MPIF90=mpif90 FFLAGS="-O2 -assume byterecl" \
                  CC=gcc CFLAGS=-O3 LDFLAGS=-static
instructs configure to use mpif90 as Fortran 90 compiler with flags -O2 -assume byterecl, gcc as C compiler with flags -O3, and to link with flag -static. Note that the value of FFLAGS must be quoted, because it contains spaces. NOTA BENE: do not pass compiler names with the leading path included. F90=f90xyz is ok, F90=/path/to/f90xyz is not. Do not use environment variables with configure unless they are needed! try configure with no options as a first step.

If your machine type is unknown to configure, you may use the ARCH variable to suggest an architecture among supported ones. Some large parallel machines using a front-end (e.g. Cray XT) will actually need it, or else configure will correctly recognize the front-end but not the specialized compilation environment of those machines. In some cases, cross-compilation requires to specify the target machine with the -host option. This feature has not been extensively tested, but we had at least one successful report (compilation for NEC SX6 on a PC). Currently supported architectures are:

ia32 Intel 32-bit machines (x86) running Linux
ia64 Intel 64-bit (Itanium) running Linux
x86_64 Intel and AMD 64-bit running Linux - see note below
aix IBM AIX machines
solaris PC's running SUN-Solaris
sparc Sun SPARC machines
crayxt4 Cray XT4/XT5/XE machines
mac686 Apple Intel machines running Mac OS X
cygwin MS-Windows PCs with Cygwin
mingw32 Cross-compilation for MS-Windows, using mingw, 32 bits
mingw64 As above, 64 bits
necsx NEC SX-6 and SX-8 machines
ppc64 Linux PowerPC machines, 64 bits
ppc64-mn as above, with IBM xlf compiler
ppc64-bg IBM BlueGene
arm ARM machines (with gfortran)

Note: x86_64 replaces amd64 since v.4.1. Cray Unicos machines, SGI machines with MIPS architecture, HP-Compaq Alphas are no longer supported since v.4.2; PowerPC Macs are no longer supported since v.5.0. Finally, configure recognizes the following command-line options:
-enable-parallel compile for parallel (MPI) execution if possible (default: yes)
-enable-openmp compile for OpenMP execution if possible (default: no)
-enable-shared use shared libraries if available (default: yes;
  "no" is implemented, untested, in only a few cases)
-enable-debug compile with debug flags (only for selected cases; default: no)
-disable-wrappers disable C to fortran wrapper check (default: enabled)
-enable-signals enable signal trapping (default: disabled)

and the following optional packages:
-with-internal-blas compile with internal BLAS (default: no)
-with-internal-lapack compile with internal LAPACK (default: no)
-with-scalapack=no do not use ScaLAPACK (default: yes)
-with-scalapack=intel use ScaLAPACK for Intel MPI (default:OpenMPI)

If you want to modify the configure script (advanced users only!), see the Developer Manual.


2.3.1 Manual configuration

If configure stops before the end, and you don't find a way to fix it, you have to write working make.inc, include/fft_defs.h and include/c_defs.h files. For the latter two files, follow the explanations in include/defs.h.README.

If configure has run till the end, you should need only to edit make.inc. A few sample make.inc files are provided in install/Make.system. The template used by configure is also found there as install/make.inc.in and contains explanations of the meaning of the various variables. Note that you may need to select appropriate preprocessing flags in conjunction with the desired or available libraries (e.g. you need to add -D__FFTW to DFLAGS if you want to link internal FFTW). For a correct choice of preprocessing flags, refer to the documentation in include/defs.h.README.

NOTA BENE: If you change any settings (e.g. preprocessing, compilation flags) after a previous (successful or failed) compilation, you must run make clean before recompiling, unless you know exactly which routines are affected by the changed settings and how to force their recompilation.


next up previous contents
Next: 2.4 Libraries Up: 2 Installation Previous: 2.2 Prerequisites   Contents
2017-03-03