Q-Chem is a comprehensive ab initio quantum chemistry package for accurate predictions of molecular structures, reactivities, and vibrational, electronic and NMR spectra. The new release of Q-Chem 4.0 represents the state-of-the-art of methodology from the highest performance DFT/HF calculations to high level post-HF correlation methods:
Create a batch input file (e.g. qchem.sh). For example:
#!/bin/bash
#SBATCH --job-name="QC"
#SBATCH --mail-type=BEGIN,END
module load qchem/4.3
cd /data/$USER/qchem
# copy the sample data to this directory
cp ${QC}/samples/bsse/frgm_mp2_h2o_h2o_h2o.in .
# run qchem
qchem -nt $SLURM_CPUS_PER_TASK frgm_mp2_h2o_h2o_h2o.in frgm_mp2_h2o_h2o_h2o.in.out
Submit this job using the Slurm sbatch command. e.g.
sbatch --cpus-per-task=16 --threads-per-core=1 --mem=20g qchem.sh
| -nt $SLURM_CPUS_PER_TASK | tells Q-Chem to run $SLURM_CPUS_PER_TASK threads |
| --cpus-per-task=16 | tells Slurm how many CPUs to allocate |
| --threads-per-core=1 | specifies that one thread should be run on each physical core (i.e. ignore hyperthreading). This is usually recommended for cpu-intensive parallel jobs. |
| --gres=lscratch:100 | specifies that 100 GB of local scratch on the node should be allocated to this job. This parameter is required for all Qchem job submissions. |
When the qchem module is loaded as part of a batch job, it sets the environment variable $QCLOCALSCR to '/lscratch/$SLURM_JOBID' . This directory is only created if you submit the job with --gres=lscratch:#. (see the User Guide section on using local disk.
#!/bin/bash
#SBATCH --job-name="QC"
module load qchem/4.3
cd /data/$USER/qchem
# copy the sample input file to this directory
cp ${QC}/samples/sp/dft_b5050lyp_c4h6.in .
# run qchem
make-qchem-nodefile
export QCMACHINEFILE=`pwd`/qchem.$SLURM_JOBID.nodes
qchem -np $SLURM_NTASKS dft_b5050lyp_c4h6.in dft_b5050lyp_c4h6.in.out
rm $QCMACHINEFILE
Submit this job with:
biowulf% sbatch --ntasks=4 --ntasks-per-core=1 --gres=lscratch:100 qchem.bat
where:
| make-qchem-nodefile | a script that writes a file containing a list of nodes to be used |
| $QCMACHINEFILE | environment variable used by Q-Chem to determine the nodes on which to run |
| -np $SLURM_NTASKS | tells Q-Chem to run $SLURM_NTASKS MPI processes |
| --ntasks=4 | tells Slurm how many tasks (MPI processes) to run |
| --ntasks-per-core=1 | tells Slurm to run only one task on each physical core (i.e. ignore hyperthreading). This is usually recommended for cpu-intensive parallel jobs. |
| --gres=lscratch:100 | specifies that 100 GB of local scratch on the node should be allocated to this job. This parameter is required for all Qchem job submissions. |