Quantum Espresso in the Unified European Application Benchmark Suite (UEABS)
Dcoument Author: A. Emerson (a.emerson@cineca.it) , Cineca.
Last update: 29th -May-2017


Introduction

Quantum ESPRESSO (usually abbreviated as QE) is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials. 

Software Requirements

Essential

* Quantum ESPRESSO 6.0.  At the time of writing a later version (6.1) is available but the release notes report bug fixes and new functionality, rather than performance enhancements.
* A FORTRAN compiler

Optional

* A parallel linear algebra library such as Scalapack or Intel MKL. If none is available on your system then the installation can use a version supplied with the distribution.

Downloading the software

QE distribution
Many packages are available from the download page but since you need only the main base package for the benchmark suite, the expresso-6.0.tar.gz file will be sufficient. This can be downloaded as:

http://qe-forge.org/gf/download/frsrelease/224/1044/qe-6.0.tar.gz

Compiling the application

The QE documentation gives more details but for the benchmark suite this general procedure is followed.

1. Uncompress the main QE distribution:

tar zxvf espresso-6.0.tar.gz
cp 6.0.tar.gz espresso-6.0


2. Run  configure and make:

./configure --enable-parallel --enable-openmp -–with-scalapack=intel
  
make pw

In the above, it is assumed that an Intel compiler is used for compilation so that the program can be linked with the MKL library. In the UEABS the pw.x program has been selected for the benchmarks so this is the one selected in the make.  

Alternatively, you can do a 

make all

which will compile all the programs available in the QE package.  
A link to the QE executable will appear in the directory bin/ and is called pw.x.

Examples
We now give a run example for one of the PRACE architectures.

Marconi, KNL-partition, Cineca.

The latest version is available as a module within the Marconi KNL environment, which can be loaded with the following commands:

module load env-knl
module load profile/knl
module load autoload qe/6.0_knl


A typical batch job for QE on the KNLs is as follows:

#!/bin/bash
#PBS -l walltime=06:00:00
#PBS -l select=2:mpiprocs=34:ncpus=68
#PBS -A <your account_no>
#PBS -N jobname

module purge
module load profile/knl
module load autoload qe/6.0_knl

cd ${PBS_O_WORKDIR}
export OMP_NUM_THREADS=4
export MKL_NUM_THREADS=${OMP_NUM_THREADS}

mpirun pw.x -npool 4 -input file.in > file.out

This job will run on 2 KNL nodes, with 34 MPI processes per node and 4 OpenMP threads per core. Note that on Marconi the only memory configuration available is cache/quadrant.



