Compiling Quantum Espresso

From URCFwiki
Jump to: navigation, search

http://www.quantum-espresso.org/

Suggested

Standard Proteus nodes

  • intel/composerxe/2015.1.133
  • proteus-openmpi/intel/2015/1.8.1-mlnx-ofed

New Proteus (Intel Sky Lake) nodes

  • intel/composerxe/2019u1
  • proteus-openmpi/intel/2019/3.1.4

Compilation Options

Running

  • Use fixed16 or fixed40 PEs

OBSOLETE

Compiled using Intel Compilers. See Compiling for Intel with Intel Composer XE, MKL, and Intel MPI.

Environment

Modules needed:

    shared
    proteus
    sge/univa
    gcc/4.8.1
    intel/compiler
    intel/mkl
    intel-mpi/64

Environment variables:

    export CC=icc
    export F77=ifort
    export F90=ifort
    export MPIF90=mpiifort

Download

Individually from http://www.qe-forge.org/gf/project/q-e/frs/?action=FrsReleaseBrowse&frs_package_id=18

    [juser@proteusi01 ~]$ mkdir src
    [juser@proteusi01 ~]$ cd src
    [juser@proteusi01 src]$ wget ....../espresso-X.Y.tar.gz
    [juser@proteusi01 src]$ tar xf espresso-X.Y.tar.gz

Configure

    [juser@proteusa01 espress-X.Y]$ ./configure --prefix=$HOME/espresso --enable-parallel --enable-openmp --enable-shared --with-scalapack=intel | tee Configure.out

Check the file Configure.out to see that all the appropriate libraries were picked up:

    The following libraries have been found:
      BLAS_LIBS=  -lmkl_gf_lp64  -lmkl_gnu_thread -lmkl_core
      LAPACK_LIBS=
      SCALAPACK_LIBS=-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
      FFT_LIBS=-lfftw3xf_intel
      ...
      Parallel environment detected successfully.\
      Configured for compilation of parallel executables.
    
    For more info, read the ESPRESSO User's Guide (Doc/users-guide.tex).
    --------------------------------------------------------------------
    configure: success

Modify make.sys

    CFLAGS         = -O3 -xAVX -ipo  $(DFLAGS) $(IFLAGS)
    ...
    FFLAGS         = -O3 -xAVX -ipo -assume byterecl -g -traceback -par-report0 -vec-report0 -openmp
    ...
    AR             = xiar

Build

    [juser@proteusi01 espresso-X.Y]$ make -j 16 pw | tee Make.pw.out

Running

Since this uses Intel MPI, the intelmpi parallel environment (PE) must be requested in the job script, e.g.

    #$ -pe intelmpi 128
    ...
    ### "-rmk sge" specifies Grid Engine integration
    ### -np not necessary singe GE integration allows pw.x to read number of slots from the environment
    mpirun -rmk sge pw.x ...