Created
August 7, 2018 14:05
-
-
Save marcc-hpc/6598b25f9a4182d6627378d88447e6bc to your computer and use it in GitHub Desktop.
Matching job script for example_lapack.py
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
#!/bin/bash -l | |
#SBATCH --job-name=test_with_gnu_parallel | |
#SBATCH --partition=parallel | |
#SBATCH --time=1:0:0 | |
#SBATCH --nodes=1 | |
#SBATCH --ntasks=4 | |
#SBATCH --cores=6 | |
# in this example we are using multithreading via MKL threads | |
# if you have single core tasks set ntasks=24 | |
# You can optionally use these | |
###SBATCH --output test_with_gnu_parallel%a.out | |
###SBATCH --error test_with_gnu_parallel_%a.err | |
###SBATCH [email protected] | |
###SBATCH --mail-type=ALL | |
# See this resource for 'inspiration' in using GNU parallel | |
# https://rcc.uchicago.edu/docs/tutorials/kicp-tutorials/running-jobs.html | |
ml anaconda-python/2.7 | |
ml parallel | |
ml | |
mkdir -p logs | |
# start timestamp | |
date | |
# this call is good for single core but exclusive may degrade performance in multithreading | |
srun="srun --exclusive -N1 -n1 -c6" | |
# --delay .2 prevents overloading the controlling node | |
# -j is the number of tasks parallel runs so we set it to 24 (the number of steps we want to run) | |
# --joblog makes parallel create a log of tasks that it has already run | |
# --resume makes parallel use the joblog to resume from where it has left off | |
# the combination of --joblog and --resume allow jobs to be resubmitted if | |
# necessary and continue from where they left off | |
parallel="parallel --delay .2 -j 4 --joblog logs/runtask.log --resume" | |
# gnu parallel: this runs the parallel command we want | |
# in this case, we are running a script named runtask | |
# parallel uses ::: to separate options. Here {1..20} is a shell expansion | |
# so parallel will run the command passing the numbers 1 through 10 | |
# via argument {1} | |
# srun arguments: | |
# (single core) the --exclusive to srun makes srun use distinct CPUs for each job step | |
# -N1 -n6 allocates a matching cores to each job step | |
echo $parallel "$srun python example_lapack.py {1}000 6" ::: {1..10} | |
$parallel "$srun python example_lapack.py {1}000 6" ::: {1..10} | |
# end timestamp | |
date |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment