-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update qchem.md #686
Open
sinolonghai
wants to merge
6
commits into
NREL:gh-pages
Choose a base branch
from
sinolonghai:patch-8
base: gh-pages
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Update qchem.md #686
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
eeff2e0
Update qchem.md
sinolonghai 113482b
Update docs/Documentation/Applications/qchem.md
yandthj d34161b
Update docs/Documentation/Applications/qchem.md
yandthj 2de2d72
Update docs/Documentation/Applications/qchem.md
yandthj 253b66b
Update qchem.md
sinolonghai fd16e22
Update qchem.md
sinolonghai File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,61 +4,121 @@ | |
|
||
## Running Q-Chem | ||
|
||
The `q-chem` module should be loaded to set up the necessary environment. The `module help` output can provide more detail. In particular, the modulefile does not set the needed environment variable `QCSCRATCH`, as this is likely unique for each run. `QCLOCALSCR` is set by default to `/tmp/scratch`, but one may wish to point to a more persistent location if files written to local scratch need to be accessed after the job completes. Users can easily do this in their Slurm scripts or at the command line via `export` (Bash) or `setenv` (csh). | ||
The `q-chem` module should be loaded to set up the necessary environment. The `module help` output can provide more detail. In particular, the modulefile does not set the needed environment variable `QCSCRATCH`, as this is likely unique for each run. Users should do this in their Slurm scripts or at the command line via `export` (bash) or `setenv` (csh). | ||
|
||
The simplest means of starting a Q-Chem job is via the supplied `qchem` wrapper. The general syntax is: | ||
|
||
`qchem -slurm <-nt number_of_OpenMP_threads> <input file> <output file> <savename>` | ||
|
||
For example, to run a job with 36 threads: | ||
For example, to run a job with 104 threads: | ||
|
||
`qchem -slurm -nt 36 example.in` | ||
`qchem -slurm -nt 104 example.in` | ||
|
||
!!! tip "Note" | ||
The Q-Chem input file must be in the same directory in which you issue the qchem command. In other words, `qchem ... SOMEPATH/<input file>` won't work. | ||
|
||
For a full list of which types of calculation are parallelized and the types of parallelism, see the [Q-Chem User's Manual](https://manual.q-chem.com/5.3/). | ||
For a full list of which types of calculation are parallelized and the types of parallelism, see the [Q-Chem User's Manual](https://manual.q-chem.com/6.2/). | ||
|
||
To save certain intermediate files for, *e.g.*, restart, a directory name needs to be provided. If not provided, all scratch files will be automatically deleted at job's end by default. If provided, a directory `$QCSCRATCH/savename` will be created and will hold saved files. In order to save all intermediate files, you can add the `-save` option. | ||
|
||
A template Slurm script to run Q-Chem with 36 threads is: | ||
A template Slurm script to run Q-Chem with 104 threads is: | ||
|
||
??? example "Sample Submission Script" | ||
### Sample Submission Script for Kestrel | ||
|
||
```bash | ||
``` | ||
#!/bin/bash | ||
#SBATCH --job-name=my_qchem_job | ||
#SBATCH --account=my_allocation_ID | ||
#SBATCH --ntasks=36 | ||
#SBATCH --time=01:00:00 | ||
#SBATCH --account=[my_allocation_ID] | ||
#SBATCH --nodes=1 | ||
#SBATCH --tasks-per-node=104 | ||
#SBATCH --time=01:00:00 | ||
#SBATCH --exclusive | ||
#SBATCH --mail-type=BEGIN,END,FAIL | ||
#SBATCH [email protected] | ||
#SBATCH --output=std-%j.out | ||
#SBATCH --error=std-%j.err | ||
|
||
# Load the Q-Chem environment | ||
module load q-chem | ||
|
||
# Go to the location of job files, presumably from where this file was submitted | ||
cd $SLURM_SUBMIT_DIR | ||
|
||
# Set up scratch space | ||
SCRATCHY=/scratch/$USER/${SLURM_JOB_NAME:?} | ||
if [ -d $SCRATCHY ] | ||
then | ||
rm -r $SCRATCHY | ||
module load q-chem/6.2 | ||
|
||
if [ -e /dev/nvme0n1 ]; then | ||
SCRATCH=$TMPDIR | ||
echo "This node has a local storage and will use $SCRATCH as the scratch path" | ||
else | ||
SCRATCH=/scratch/$USER/$SLURM_JOB_ID | ||
echo "This node does not have a local storage drive and will use $SCRATCH as the scratch path" | ||
fi | ||
mkdir -p $SCRATCHY | ||
export QCSCRATCH=$SCRATCHY | ||
|
||
# Move files over | ||
cp * $SCRATCHY/. | ||
cd $SCRATCHY | ||
|
||
# Start run. Keep restart files without intermediate temp files in directory called "my_save" | ||
qchem -nt 36 job.in job.out my_save | ||
``` | ||
|
||
To run this script on Swift, the number of threads can be changed to 64. | ||
mkdir -p $SCRATCH | ||
|
||
export QCSCRATCH=$SCRATCH | ||
export QCLOCALSCR=$SCRATCH | ||
|
||
jobnm=qchem_test | ||
|
||
if [ $SLURM_JOB_NUM_NODES -gt 1 ]; then | ||
QCHEMOPT="-mpi -np $SLURM_NTASKS" | ||
else | ||
QCHEMOPT="-nt $SLURM_NTASKS" | ||
fi | ||
|
||
echo Running Q-Chem with this command: qchem $QCHEMOPT $jobnm.com $jobnm.out | ||
qchem $QCHEMOPT $jobnm.com $jobnm.out | ||
|
||
rm $SCRATCH/* | ||
rmdir $SCRATCH | ||
``` | ||
|
||
To run this script on systems other than Kestrel, the number of threads should be changed accordingly. | ||
|
||
A large number of example Q-Chem input examples are available in `/nopt/nrel/apps/q-chem/<version>/samples`. | ||
|
||
## Running BrianQC | ||
BrianQC is the GPU version of Q-Chem and can perform Q-Chem calculations on GPUs, which is significantly faster for some larger ab initio jobs. BrianQC uses the same input file as Q-Chem. Below is a sample slurm script for BrianQC, which should be submitted on the GPU login nodes of Kestrel. If running on Swift, please also add "#SBATCH -p gpu" to the header of this script. | ||
``` | ||
#!/bin/bash | ||
#SBATCH --job-name=my_qchem_job | ||
#SBATCH --account=[my_allocation_ID] | ||
#SBATCH --nodes=1 | ||
#SBATCH --tasks-per-node=104 | ||
#SBATCH --time=01:00:00 | ||
#SBATCH --gres=gpu:[number of gpu] | ||
#SBATCH --mem=[requested memory] | ||
#SBATCH --mail-type=BEGIN,END,FAIL | ||
#SBATCH [email protected] | ||
#SBATCH --output=std-%j.out | ||
#SBATCH --error=std-%j.err | ||
|
||
# Load the Q-Chem environment | ||
module load brianqc | ||
|
||
if [ -e /dev/nvme0n1 ]; then | ||
SCRATCH=$TMPDIR | ||
echo "This node has a local storage and will use $SCRATCH as the scratch path" | ||
else | ||
SCRATCH=/scratch/$USER/$SLURM_JOB_ID | ||
echo "This node does not have a local storage drive and will use $SCRATCH as the scratch path" | ||
fi | ||
|
||
mkdir -p $SCRATCH | ||
|
||
export QCSCRATCH=$SCRATCH | ||
export QCLOCALSCR=$SCRATCH | ||
|
||
jobnm=qchem_test | ||
|
||
if [ $SLURM_JOB_NUM_NODES -gt 1 ]; then | ||
QCHEMOPT="-gpu -mpi -np $SLURM_NTASKS" | ||
else | ||
QCHEMOPT="-gpu -nt $SLURM_NTASKS" | ||
fi | ||
|
||
echo Running Q-Chem with this command: qchem $QCHEMOPT $jobnm.com $jobnm.out | ||
qchem $QCHEMOPT $jobnm.com $jobnm.out | ||
|
||
rm $SCRATCH/* | ||
rmdir $SCRATCH | ||
``` | ||
|
||
|
||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All GPU nodes have local disk so this check shouldn't be necessary