NWChem¶
Versions avaiable¶
Supported versions¶
Note
The versions of NWChem installed in the software repository are built and supported by the Discoverer HPC team.
To check which NWChem versions are currently supported on Discoverer, execute on the login node:
module avail
and grep the output for “nwchem”.
User-supported versions¶
Users are welcome to bring, or compile, and use their own builds of NWChem, but those builds will not be supported by the Discoverer HPC team.
Pre-prosessing¶
If you need to convert certain AMBER topology into the format of one used by NWChem, you can run the tool amber-helper
, which is built by the Discoverer HPC team. Just load the environment module:
nwchem/7/latest-aocc-openmpi-int64
and after that amber-helper
can be invoked directly (without specifying the path to the executable):
amber-helper
Running simulations¶
Warning
You MUST NOT execute simulations directly upon the login node (login.discoverer.bg). You have to run your simulations as Slurm jobs only.
Warning
Write your trajectories and results of analysis only inside your Personal scratch and storage folder (/discofs/username) and DO NOT use for that purpose (under any circumstances) your Home folder (/home/username)!
Use of OpenMP (SM)¶
Important
Be aware that not all simulation protocols and methods included in NWChem support shared-memory parallelism, based on the OpenMP library. The use of OpenMP promoted threading should be in sync with the input configuration. Check the NWChem documentation.
Slurm batch job script¶
The following template can be useful for creating a Slurm batch job script to submit to the queue:
#!/bin/bash
#
#SBATCH --partition=cn # Partition (you may need to change this, ask the support team)
#SBATCH --job-name=nwchem
#SBATCH --time=01:00:00 # WallTime - set it accordningly
#SBATCH --nodes 1 # Number of node employed
#SBATCH --ntasks-per-node 128 # Use all 128 CPU cores on each node
#SBATCH --ntasks-per-core 1 # Run only one MPI process per CPU core
#SBATCH --cpus-per-task 1 # Number of OpenMP threads per MPI process
# Read the note about the use of OpenMP in NWChem
#SBATCH -o slurm.%j.out # STDOUT
#SBATCH -e slurm.%j.err # STDERR
ulimit -Hs unlimited
ulimit -Ss unlimited
module purge
module load nwchem/7/latest-aocc-openmpi-int64
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
export OMP_PLACES=cores
export OMP_PROC_BIND=spread
export UCX_NET_DEVICES=mlx5_0:1
export UCX_POSIX_USE_PROC_LINK=n
cd $SLURM_SUBMIT_DIR
mpirun nwchem input.nw
Specify the parmeters and resources required for successfully running and completing the job:
- Slurm partition of compute nodes, based on your project resource reservation (
--partition
)- job name, under which the job will be seen in the queue (
--job-name
)- wall time for running the job (
--time
)- number of occupied compute nodes (
--nodes
)- number of MPI proccesses per node (
--ntasks-per-node
)- number of threads (OpenMP threads) per MPI process (
--cpus-per-task
)- version of NWChem to run after
module load
(see Supported versions)
Save the complete Slurm job description as a file, storing it inside the folder with the input configuration, for example /discofs/$USER/run_nwchem/run.batch
, and submit it to the queue afterwards
cd /discofs/$USER/run_nwchem/
sbatch run.batch
Upon successful submission, the standard output will be directed by Slurm into the file /discofs/$USER/run_nwchem/slurm.%j.out
(where %j
stands for the Slurm job ID), while the standard error output will be stored in /discofs/$USER/run_nwchem/slurm.%j.err
.
Check the provided working example (see below) to find more details about how to create a complete Slurm batch job script for running NWChem.
Working example¶
The goal of this working example is to show one possible way NWChem can run on Discoverer HPC through a Slurm batch job. Running the example is simple - just execute on the login node (login.discoverer.bg):
cd /discofs/$USER
sbatch /opt/software/WRF/4/4.4-nvidia-openmpi/examples/1.batch
Once started successfully by Slurm, that job will create first a directory under your Personal scratch and storage folder (/discofs/username). The name of the directory will be similar to this one: nwchem_2022-06-21-22-21-06-52.1655836192
(numbers should be different in your case). You may check the advance of the simulation by executing:
cd /discofs/$USER
tail -f slurm.XXXXX.out
where XXXXX
stands for the Slurm ID of the running job.
Getting help¶
See Getting help