Introduction

Quantum ESPRESSO (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. 

Official website for Quantum ESPRESSOhttps://www.quantum-espresso.org/

Build Quantum ESPRESSO using Spack

Please refer to this link for getting started with spack using AMD Zen Software Studio.

    # Example for building Quantum-Espresso with AOCC and AOCL.
$ spack install quantum-espresso+elpa+scalapack hdf5=parallel %aocc ^amdfftw ^amdscalapack ^amdblis threads=openmp ^amdlibflame ^elpa ^openmpi fabrics=cma,ucx

Note: Quantum-ESPRESSO is built with MPI and OpenMP support by default. Explanation of the command options:

Symbol Meaning
%aocc Build Quantum ESPRESSO with AOCC compiler.
+elpa +scalapack  Build Quantum ESPRESSO with ELPA and scalapack support.
^amdfftw Use amdfftw as the FFTW implementation.
^amdscalapack Use amdscalapack as the SCALAPACK implementation.
^amdblis threads=openmp Use AMDBlis as the BLAS implementation and enable OpenMP support.
^elpa Build Quantum ESPRESSO with ELPA Library.
^amdliflame Use amdlibflame as the LAPACK implementation.
^openmpi fabrics=cma,ucx Use OpenMPI as the MPI provider and use the CMA network for efficient intra-node communication, falling back to the UCX network fabric, if required. 
Note: It is advised to specifically set the appropriate fabric for the host system if possible. Refer to Open MPI with AMD Zen Software Studio for more guidance.

Note: Quantum-ESPRESSO is built with MPI and OpenMP support by default. 

Running Quantum ESPRESSO

    #!/bin/bash
# Load quantum espresso build with AOCC
spack load quantum-espresso %aocc

## Obtaining Benchmarks: AuSurf-Large112 Gold surface (112 atoms) and 8 k-points. DEISA pw benchmark.
wget https://hpc-forge.cineca.it/files/gara_tier_1/public/AuSurf-large.tar.gz
tar -xvf AuSurf-large.tar.gz

# MPI and OMP options
# MPI_RANKS = Number of cores available in the system.
MPI_RANKS=$(nproc)
export OMP_NUM_THREADS=1
MPI_OPTS="-np $MPI_RANKS --bind-to core --map-by core"
 
# Run command for quantum espresso with Ta205 input dataset 
mpirun $MPI_OPTS pw.x -npool 8 -in ausurf-large.in

Note: The above build and run steps are tested with Quantum ESPRESSO 7.3.1, AOCC-5.0.0, AOCL-5.0.0, and OpenMPI-5.0.5 on Red Hat Enterprise Linux release 8.9 (Ootpa) using Spack v0.23.0.dev0 (commit id : 2da812cbad ).

For technical support on the tools, benchmarks and applications that AMD offers on this page and related inquiries, reach out to us at toolchainsupport@amd.com