This tutorial assumes you’ve generated ForceBalance
inputs using my valence-fitting repository through step 04 and have the corresponding fb-fit
, parameters-to-optimize
, and scripts
directories.
Table of Contents |
---|
Preparing Files
Copy over
fb-fit/
forcefield/force-field.offxml
optimize.in
targets.tar.gz
oe_license.txt (probably not needed, but I had it)
parameters-to-optimize/
scripts/
The valence-fitting
scripts produce the directory fb-fit/targets
, so either tar them up to use the list above or wait for the whole directory to transfer.
Preparing Scripts
The scripts/hpc3_master.sh
script is a template file, so you next have to modify it with your account/environment details. Specifically, I updated the #SBATCH -p
line to use the free
queue instead of the standard
queue, and I added my UCI email to the --mail-user line
. At least for my first attempt, I also commented out the COMPRESSED_CONDA_ENVIRONMENT
stuff, leaving me with a somewhat simpler script than the one currently in the repo:
Code Block | ||
---|---|---|
| ||
#!/bin/bash
#SBATCH -J valence-fit
#SBATCH -p free
#SBATCH -t 72:00:00
#SBATCH --nodes=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=10000mb
#SBATCH --account dmobley_lab
#SBATCH --export ALL
#SBATCH --mail-user=bwestbr1@uci.edu
#SBATCH --constraint=fastscratch
rm -rf /tmp/$SLURM_JOB_NAME
source $HOME/.bashrc
mamba activate valence-fitting
rsync -avzIi $SLURM_SUBMIT_DIR/optimize.in $SLURM_TMPDIR/$SLURM_JOB_NAME
rsync -avzIi $SLURM_SUBMIT_DIR/targets.tar.gz $SLURM_TMPDIR/$SLURM_JOB_NAME
rsync -avzIi $SLURM_SUBMIT_DIR/forcefield $SLURM_TMPDIR/$SLURM_JOB_NAME
tar -xzf targets.tar.gz
datadir=$(pwd)
mkdir -p $SLURM_SUBMIT_DIR/worker_logs
echo $(hostname) > $SLURM_SUBMIT_DIR/host
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
if ForceBalance.py optimize.in ; then
tar -czvf optimize.tmp.tar.gz optimize.tmp
rsync -avzIi --exclude="optimize.tmp" --exclude="optimize.bak" --exclude="fb_193*" --exclude="targets*" $TMPDIR/*
$SLURM_SUBMIT_DIR > copy.log
rm -rf $TMPDIR
fi
echo "All done" |
Because I wanted to run the submission scripts from the fb-fit
directory instead of the scripts
directory, I also edited the call to wq_worker_local.sh
in scripts/submit_hpc3_worker_local.sh
to point to ../scripts/wq_worker_local.sh
. I also commented out the CONDA_ENVIRONMENT
stuff therein and ran the script from the proper conda environment. Some of these changes will probably be reflected in the repository in the future.
Submitting
With these preparations done, you can run
Code Block | ||
---|---|---|
| ||
sbatch ../scripts/hpc3_master.sh |
Once that starts running, it will create a host
file containing the HOST
argument for submit_hpc3_worker_local.sh
. You can obtain the PORT
argument from the ForceBalance optimize.in
file. Then, run the worker script with
Code Block | ||
---|---|---|
| ||
../scripts/submit_hpc3_worker_local.sh HOST PORT |
Or for a “one-liner”
Code Block | ||
---|---|---|
| ||
../scripts/submit_hpc3_worker_local.sh $(sed 1q host) $(awk '/port/ {print $NF}' optimize.in) |