Examples
Simple Example
Included in the package is a small test file that you can use as an example. Try running
pytaskfarmer.py mywork.tasks
That will give you a sense of how the thing works. Feel free to kill it and restart it if you wish.
SLURM Example (Array Jobs)
Example of a batch job for using PyTaskFarmer with SLURM is below. It demonstrates how to correctly handle cleanup.
#!/bin/bash
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err
#SBATCH --qos=debug
#SBATCH --tasks-per-node=1
#SBATCH --constraint=haswell
#SBATCH --signal=B:USR1@60
#SBATCH --array=1-5
#SBATCH --time=00:05:00
function handle_signal
{
echo "$(date) bash is being killed, also kill ${PROCPID}"
kill -s USR1 ${PROCPID}
wait ${PROCPID}
}
trap handle_signal INT USR1
if [ ${#} != 1 ]; then
echo "usage: ${0} tasklist"
exit 1
fi
tasklist=${1}
logdir=${tasklist}_logs
hostname
uname -a
pwd
echo "tasklist = ${tasklist}"
${HOME}/mcgen/pytaskfarmer/pytaskfarmer.py --logDir ${logdir} --proc 32 ${tasklist} &
export PROCPID=${!}
wait ${PROCPID}
echo "$(date) Finish running!"
To run using array jobs:
sbatch slurm_test.sh mywork.tasks
SLURM Example (Multi-Node Jobs)
Example of a batch job for using PyTaskFarmer with a SLURM multi-node job is below. It demonstrates how to correctly handle cleanup and launch PyTaskFarmer on multiple nodes using srun.
#!/bin/bash
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err
#SBATCH --qos=debug
#SBATCH --tasks-per-node=1
#SBATCH --constraint=haswell
#SBATCH --signal=B:USR1@60
#SBATCH -N5
#SBATCH --time=00:05:00
function handle_signal
{
echo "$(date) bash is being killed, also kill ${PROCPID}"
kill -s USR1 ${PROCPID}
wait ${PROCPID}
}
trap handle_signal INT USR1
if [ ${#} != 1 ]; then
echo "usage: ${0} tasklist"
exit 1
fi
tasklist=${1}
logdir=${tasklist}_logs
hostname
uname -a
pwd
echo "tasklist = ${tasklist}"
srun -N${SLURM_JOB_NUM_NODES} \
${HOME}/mcgen/pytaskfarmer/pytaskfarmer.py --logDir ${logdir} --proc 32 ${tasklist} &
export PROCPID=${!}
wait ${PROCPID}
echo "$(date) Finish running!"
To run by requesting multiple nodes at the same time (srun):
sbatch srun_test.sh mywork.taskss