NWChem
NWChem is an open-source quantum chemistry code developed by the Environmental Molecular Sciences Laboratory at Pacific Northwest National Laboratory. The code is hosted on a GitHub repository and official documentation is provided.
Using NWChem at NERSC
First Option: Shifter images for release 7.2.0
The following scripts use an image created from the 7.2.0 NWChem release using the following Dockerfile to run NWChem on Perlmutter via Shifter.
As far as the execution on GPUs is concerned, the user should read the related documentation on the NWChem website https://nwchemgit.github.io/TCE.html#ccsdt-method-with-cuda
Slurm script for NWChem Shifter image on Perlmutter CPUs
```bash
!/bin/bash
SBATCH -C cpu
SBATCH -q regular
SBATCH -t 1:00:00
SBATCH -N 2
SBATCH –ntasks-per-node=64
SBATCH –cpus-per-task=2
SBATCH -J my_nwchem_job
SBATCH -o my_nwchem_job.%j.out
SBATCH -e my_nwchem_job.%j.err
SBATCH –image=ghcr.io/nwchemgit/nwchem-720.nersc.mpich4.mpi-pr:latest
export OMP_NUM_THREADS=1 export COMEX_MAX_NB_OUTSTANDING=6 export FI_CXI_RX_MATCH_MODE=hybrid export COMEX_EAGER_THRESHOLD=16384 export FI_CXI_RDZV_THRESHOLD=16384 export FI_CXI_OFLOW_BUF_COUNT=6 export MPICH_SMP_SINGLE_COPY_MODE=CMA srun -N $SLURM_NNODES –cpu-bind=cores shifter –module=mpich nwchem input.nw ```
Slurm script for NWChem Shifter image on Perlmutter GPUs
```bash
!/bin/bash
SBATCH -C gpu
SBATCH -q regular
SBATCH -t 1:00:00
SBATCH -N 2
SBATCH –ntasks-per-node=16
SBATCH –cpus-per-task=8
SBATCH –gpus-per-node=4
SBATCH –gpu-bind=none
SBATCH -J my_nwchem_job
SBATCH -o my_nwchem_job.%j.out
SBATCH -e my_nwchem_job.%j.err
SBATCH –image=ghcr.io/nwchemgit/nwchem-720.nersc.mpich4.mpi-pr:latest
export OMP_NUM_THREADS=1 export COMEX_MAX_NB_OUTSTANDING=6 export FI_CXI_RX_MATCH_MODE=hybrid export COMEX_EAGER_THRESHOLD=16384 export FI_CXI_RDZV_THRESHOLD=16384 export FI_CXI_OFLOW_BUF_COUNT=6 export MPICH_SMP_SINGLE_COPY_MODE=CMA srun -N 1 -n 2 –cpu-bind=cores shifter –module=gpu,mpich nvidia-smi srun -N $SLURM_NNODES –cpu-bind=cores shifter –module=gpu,mpich nwchem input.nw ```
Second Option: Shifter images for the master branch
The following scripts use an image created from the master branch
of the NWChem GitHub repository using the following
Dockerfile
to run NWChem on Perlmutter via Shifter.
Slurm script for NWChem Shifter image on Perlmutter CPUs
```bash
!/bin/bash
SBATCH -C cpu
SBATCH -q regular
SBATCH -t 1:00:00
SBATCH -N 2
SBATCH –ntasks-per-node=64
SBATCH –cpus-per-task=2
SBATCH -J my_nwchem_job
SBATCH -o my_nwchem_job.%j.out
SBATCH -e my_nwchem_job.%j.err
SBATCH –image=ghcr.io/nwchemgit/nwchem-dev.nersc.mpich4.mpi-pr:latest
export OMP_NUM_THREADS=1 export COMEX_MAX_NB_OUTSTANDING=6 export FI_CXI_RX_MATCH_MODE=hybrid export COMEX_EAGER_THRESHOLD=16384 export FI_CXI_RDZV_THRESHOLD=16384 export FI_CXI_OFLOW_BUF_COUNT=6 export MPICH_SMP_SINGLE_COPY_MODE=CMA srun -N $SLURM_NNODES –cpu-bind=cores shifter –module=mpich nwchem input.nw ```
Slurm script for NWChem Shifter image on Perlmutter GPUs
```bash
!/bin/bash
SBATCH -C gpu
SBATCH -q regular
SBATCH -t 1:00:00
SBATCH -N 2
SBATCH –ntasks-per-node=16
SBATCH –cpus-per-task=8
SBATCH –gpus-per-node=4
SBATCH –gpu-bind=none
SBATCH -J my_nwchem_job
SBATCH -o my_nwchem_job.%j.out
SBATCH -e my_nwchem_job.%j.err
SBATCH –image=ghcr.io/nwchemgit/nwchem-dev.nersc.mpich4.mpi-pr:latest
export OMP_NUM_THREADS=1 export COMEX_MAX_NB_OUTSTANDING=6 export FI_CXI_RX_MATCH_MODE=hybrid export COMEX_EAGER_THRESHOLD=16384 export FI_CXI_RDZV_THRESHOLD=16384 export FI_CXI_OFLOW_BUF_COUNT=6 export MPICH_SMP_SINGLE_COPY_MODE=CMA srun -N 1 -n 2 –cpu-bind=cores shifter –module=gpu,mpich nvidia-smi srun -N $SLURM_NNODES –cpu-bind=cores shifter –module=gpu,mpich nwchem input.nw ```