Installation & Execution¶
Installation with AMSpackages¶
Use the AMSpackages package manager to install Quantum ESPRESSO. This will install a version of Quantum ESPRESSO 7.1 that has been modified to support communicating with the AMS driver via the AMSpipe interface. This is the recommended way to install Quantum ESPRESSO.
Open the package manager from the SCM → Packages menu in the graphical user interface, select Quantum ESPRESSO and click Install, or
Directly install Quantum ESPRESSO from the command-line:
"$AMSBIN/amspackages" install qe
Note that this will download Quantum ESPRESSO from SCM servers on the internet. For offline installation, see the package manager documentation.
Alternatively, you can compile your own version from source code.
How to run Quantum ESPRESSO via AMS driver¶
Quantum ESPRESSO should be installed through the package manager as explained above. That version contains some modifications by SCM that makes it compatible with the AMS driver.
You must run ams
in serial. This will still let you run pw.x
(Quantum ESPRESSO) in parallel.
To run ams
in serial we recommend setting the environment variable SCM_DISABLE_MPI=1
, as this will make sure that the AMS driver is not launched through mpirun
(or a batch system specific equivalent launcher such as srun
on SLURM).
export SCM_DISABLE_MPI=1
If you launch AMS through PLAMS, this environment variable is automatically set in the runscript when the Quantum ESPRESSO engine is used.
See also
The Quantum ESPRESSO binaries are executed by the AMS driver using the $AMSBIN/startqe
script.
This script sets up the necessary executable and library search paths and configures the parallel environment for Quantum ESPRESSO programs.
By default, startqe
will launch Quantum ESPRESSO programs as a SLURM job step using srun
when running in a SLURM job, or as MPI programs using mpiexec
when available.
If these defaults are not appropriate (especially when using a manually compiled Quantum ESPRESSO), they can be customized through a number of environment variables:
SCM_QESTARTCMD: Command called to launch Quantum ESPRESSO binaries (like
pw.x
,projwfc.x
, …). This might need to be set when a custom launcher is needed to spawn the binaries. For example, when using a locally compiled version of Quantum ESPRESSO with MPI support, you might setexport SCM_QESTARTCMD=mpirun
.SCM_QESTARTCMD_OPTIONS: Options to be passed to the QE start command defined by
SCM_QESTARTCMD
. This variable is ignored whenSCM_QESTARTCMD
is not set.(expert option) SCM_QERC: Can be set to the (absolute) path to a shell script that will be sourced into
startqe
right before a Quantum ESPRESSO binary is executed. (Environment setup that might be needed to run QE binaries can then be put into that script.)(expert option) SCM_USE_LOCAL_QE: When set, instead of using the AMSpackage version of Quantum ESPRESSO, use a local version of QE that must have been compiled to support the AMS interface. The Quantum ESPRESSO binaries (like
pw.x
,projwfc.x
, …) of the local QE version should then be accessible on$PATH
.
The distribution of Quantum ESPRESSO provided by SCM is parallelized as follows:
Linux: Primary parallelization using Intel MPI, secondary parallelization using multiple OpenMP threads in each MPI process
macOS: Single process using multiple OpenMP threads (no MPI support)
Windows: Parallelization using Microsoft MPI (no OpenMP support)
By default, startqe
will set the number of CPU cores used by Quantum ESPRESSO according to the following logic:
When running under SLURM, the number of MPI ranks and OpenMP threads per MPI rank is controlled by the batch system (using its
-n/--ntasks
and-c/--cpus-per-task
options, respectively)Otherwise, the number of MPI ranks is given by the
NSCM_AMSEXTERNAL
orNSCM
environment variables (the former takes precedence) or the-n
command line argument toams
.OpenMP threading will be disabled by default if MPI is being used. This can be overridden by setting
OMP_NUM_THREADS
to the desired number of threads per MPI rank.If MPI support is not available,
NSCM_AMSEXTERNAL
/NSCM
/-n
will control the number of OpenMP threads instead.
Note
MPI support is automatically disabled by AMS for Quantum ESPRESSO programs other than pw.x
because these programs can fail when too many MPI ranks are used. These programs can still run with OpenMP parallelization as described above.
Warning
Setting SCM_QESTARTCMD
disables the autoconfiguration of MPI and OpenMP and automatic usage of srun
. Make sure to set SCM_QESTARTCMD_OPTIONS
appropriately to use the desired number of cores.
Manual compilation and installation¶
Alternatively you can compile the modified version of Quantum ESPRESSO yourself. It is available as a fork in Gitlab:
gitlab.com/scm-bv/q-e/-/tree/amspipe
Instructions on how to build Quantum ESPRESSO can be found on the official Wiki:
gitlab.com/QEF/q-e/-/wikis/Developers/CMake-build-system
You will have to build it using CMake and set QE_ENABLE_AMSPIPE=ON
to enable the integration with the AMS driver.
The following script may be a good starting point for compiling the modified Quantum ESPRESSO version on your machine.
git clone https://gitlab.com/scm-bv/q-e.git
cd q-e
git checkout amspipe
mkdir build
cd build
cmake -DQE_ENABLE_AMSPIPE=ON ..
cmake --build .
By default the AMS driver will always try to use the AMSpackages version of QuantumESPRESSO.
If you compiled your own binaries and want to use them, make sure that your pw.x
is available on $PATH
and set the SCM_USE_LOCAL_QE
environment variable:
export PATH="/path/to/my/q-e/build/bin:$PATH"
export SCM_USE_LOCAL_QE=1
Compile Quantum ESPRESSO for a CUDA GPU and use with AMS Driver¶
Note
These are just example instructions that can be taken as a starting point. They are provided for information purposes only. You likely need to adapt them.
Not all Quantum ESPRESSO features may work on the GPU.
Step 1: Download and install NVHPC SDK from https://developer.nvidia.com/hpc-sdk-downloads.
Step 2: Source appropriate environment variables to have nvc
and nvfortran
in your PATH. See the NVIDIA documentation. Example (but this will likely depend on the installation location, specific version, etc.):
NVARCH=`uname -s`_`uname -m`; export NVARCH
NVCOMPILERS=/opt/nvidia/hpc_sdk; export NVCOMPILERS
MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/24.5/compilers/man; export MANPATH
PATH=$NVCOMPILERS/$NVARCH/24.5/compilers/bin:$PATH; export PATH
export PATH=$NVCOMPILERS/$NVARCH/24.5/comm_libs/mpi/bin:$PATH
export MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/24.5/comm_libs/mpi/man
Step 3: Clone and build Quantum ESPRESSO to support the AMSpipe interface
git clone https://gitlab.com/scm-bv/q-e.git
cd q-e
git checkout amspipe
mkdir build
cd build
cmake -DQE_ENABLE_AMSPIPE=ON -DQE_ENABLE_CUDA=ON -DCMAKE_C_COMPILER=nvc -DCMAKE_Fortran_COMPILER=nvfortran ..
cmake --build .
Step 4: Run a simple calculation. Note that it is still recommended to have installed the AMS Quantum ESPRESSO package since that includes the pseudopotential files.
#!/bin/sh
### !!! modify the below path !!! ###
export PATH="/path/to/my/q-e/build/bin:$PATH"
export SCM_USE_LOCAL_QE=1
export NO_STOP_MESSAGE=yes # prevent "ieee_inexact is signaling" warning when stopping
export SCM_DISABLE_MPI=1
rm -rf ams.results
NSCM=1 OMP_NUM_THREADS=1 "$AMSBIN/ams" <<EOF
Task GeometryOptimization
System
Atoms
H 0. 0. 0.
H 1. 0. 0.
End
Lattice
6. 0. 0.
0. 6. 0.
0. 0. 6.
End
End
Engine QuantumEspresso
K_Points gamma
End
EndEngine
EOF
Note
If you receive an error like pw.x: error while loading shared libraries:
libmkl_intel_lp64.so.2: cannot open shared object file: No such file or
directory
, in order you run your custom Quantum ESPRESSO you may need to
set any other environment variables (in particular LD_LIBRARY_PATH) that
you had set up for the compilation.