Documentation:QE

Quantum ESPRESSO is an integrated suite of computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials (both norm-conserving and ultrasoft).

Being released under the GPL license, its code is freely available. QE can be used to benchmark HPC systems. It has been historically used to benchmark EPFL HPC facilities.

In this documentation, you will learn how to compile and run it and interpret the results.

Getting the code
First of all, you will need to get QuantumESPRESSO. Get the latest stable version. Configure and compiling it can be pretty straightforward, but sometimes libraries are not recognized, and depending on the libraries used, you can have huge differences in performance.

Compiling on DIT central clusters
Intel compilers are strongly advised. Load the appropriate compiler + MPI module:

module load intel-compilers/11.1.056 openmpi/1.4.2_intel-11.1.056

now you can give it a first try:

cd espresso-4.3; ./configure

This command will generate a make.sys file. Unfortunately, scalapack libraries are not detected. You will need to modify the make.sys file by hand to add them:

SCALAPACK_LIBS = -Wl,-Bstatic -L/opt/intel/Compiler/11.1/083/mkl/lib/em64t -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -Wl,-Bdynamic
 * append -D__SCALAPACK to the line beginning with DFLAGS
 * specify scalapack libs:

To compile, just type

make all

or, if you only need the pw executable (for example for the DEISA benchmarks),

make pw

Downloading the benchmarks
A good and widely used suite of benchmarks can be found at the bottom of this page. We used the DEISA Medium (AUSURF112) benchmark. Download and unpack.

QE---AUSURF112---ausurf.in     \ --espresso-4.3.1---make.sys

Fitting the benchmarks to DIT central machines
Modify the ausurf.in file. The pseudo_dir and outdir will be specified by the PBS submission script, so they should be commented. Moreover, we would like to benchmark the parallel filesystem performance. We will thus comment disk_io = 'none', too:

!pseudo_dir = './' !outdir = './' !disk_io = 'none'

Now, we create a PBS submission script in the AUSURF112 directory, let us call it sub.sh:

echo "---" echo "QE AUSURF Intel compilers 11.1.056 with SCALAPACK, ndiag=16" echo "---" NP=32 module load intel-compilers/11.1.056 openmpi/1.4.1_intel-11.1.056 cd $PBS_O_WORKDIR echo PWD=$PWD mkdir $PBS_JOBNAME PROG="$HOME/QE/espresso-4.3.1" EXE="$PROG/bin/pw.x" SCRATCH_DIR="/scratch/username/$PBS_JOBNAME/$PBS_JOBID" test -d $SCRATCH_DIR || mkdir -pv $SCRATCH_DIR export ESPRESSO_TMPDIR="$SCRATCH_DIR" export ESPRESSO_PSEUDO="$PBS_O_WORKDIR" PREFIX="mpirun -x PATH -x LD_LIBRARY_PATH -hostfile $PBS_NODEFILE -np $NP -nooversubscribe" POSTFIX="-ndiag 16" $PREFIX $EXE $POSTFIX -in $PWD/ausurf.in &> $PWD/$PBS_JOBNAME/$PBS_JOBID.out rm -r $SCRATCH_DIR
 * 1) PBS -S /bin/bash
 * 2) PBS -l select=4:ncpus=8
 * 3) PBS -l walltime=3:00:00
 * 4) PBS -N ausurf-32-sc